版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Oscar6280868/article/details/89022553
这道题目比较简单,就是要实现一个指数函数,题目如下:
首先,如何来解答这个题目,我们可能会想到,在很多语言中都内置了这个函数,直接可以调用库函数,这个时候的时间复杂度为
,还有一种方法就是暴力解法,写一个循环,循环次数为
,每次都乘以
,所以这个时候的时间复杂度为
,这都是比较容易想到的办法。
接下来我们可以从另外一个角度来进行分析,我们可以用递归的方法,将整个
次幂进行二分,当然需要判断
的奇偶性,直到
为1,代码如下所示:
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if not n:
return 1
if n < 0:
return 1/self.myPow(x, -n)
if n % 2:
return x * self.myPow(x, n-1)
return self.myPow(x * x, n / 2)
用这样递归的方法,就可以将指数函数的幂进行递归拆分,希望能对大家的递归算法的理解有所帮助,谢谢。