剑指offer刷题记录13--数值的整数次方

该系列博客内容主要是《剑指Offer》中的经典题目,结合在刷题过程中见到的一些精彩的解题过程,从而在这里记录下来。代码以Python3实现。
剑指offer刷题记录13--数值的整数次方
题目分析

该题中最容易想到的便是递归的写法,但是如果直接递归的话,可能并不高效。那我们换另外一种的思路,比如说当我们在求解3的4次方的时候,按照直接递归的话我们需要进行4次递归。当我们开始求出3 * 3=9的时候,我们不进行9 * 3=27,27 * 3的操作,而是进行9 * 9=81。因为前面的9已经计算出来了,直接再这基础上进行9的平方,这样递归的次数就可以减少一半。也就是说,我们可以用如下所示公式求a的n次方。
剑指offer刷题记录13--数值的整数次方
解法1:递归写法(分治思想)
代码如下
剑指offer刷题记录13--数值的整数次方
解法2:非递归写法(来自力扣大佬的解析)
剑指offer刷题记录13--数值的整数次方
剑指offer刷题记录13--数值的整数次方剑指offer刷题记录13--数值的整数次方
剑指offer刷题记录13--数值的整数次方
剑指offer刷题记录13--数值的整数次方
代码如下
剑指offer刷题记录13--数值的整数次方
总结:这道题刚开始以为比较简单,但还是做错了,没有考虑到负值以及0的任何次幂都是0的情况。此外,脑袋再好的逻辑都不及拿出笔来动手写一写思路,这样也方便自己理解。

参考链接