题目来源:链接
题目描述:
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
实现代码:
def myPow(self, x: float, n: int) -> float:
if x == 0:
return 0
res = 1
if n<0:
x,n = 1/x,-n
while n:
if n&1:
res *= x
x *= x
n >>= 1
return res
解题思路:
按照常规方法,我们肯定是用循环,这是最直观的
但是这里我们可以做简化,比如2^9,可以把指数9转化成1001(b),2^-9可以变成1/2 ^ 9
注意特殊情况,底数为0则值为0;指数为负数需要转换一下
所以算法流程就很简单了,循环次数变成logn,且位运算非常高效