题目描述:
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例 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
解题思路:
快速幂
如果是32次方,不需要乘32次,先求平方,在平方,计算五次即可
采用位运算对n进行迭代
class Solution:
def myPow(self, x: float, n: int) -> float:
if x==0:
return 1
res=1
f=n
while n:
if (n&1):
res*=x
x*=x
n=abs(n)>>1
return res if f>0 else 1/res