实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
解题思路
快速幂:它可以以O(logN)的时间复杂度计算乘方。
快速幂的基本思路求a ^ b
1)当b是奇数时,那么有 a^b = a * a^*(b-1)
2)当b是偶数时,那么有 a^b = a^(b/2) * a^(b/2)
class Solution(object):
def myPow(self, x, n):
# 递归
def recur(num):
if num == 0:
return 1
elif num % 2 == 0:
# 使用temp是必须的,不然如果使用两个递归函数的话复杂度不会降低
temp = recur(num/2)
return temp * temp
else:
return x * recur(num - 1)
if n >= 0:
return recur(n)
else:
return 1 / recur(-n)