题目来源:链接
题目描述:
实现函数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,且位运算非常高效
本文介绍了一种快速计算幂的算法,通过将指数转化为二进制形式,实现了对底数的快速乘方运算。该算法特别适用于大数计算,能够显著减少计算次数,提高效率。文章详细解析了算法流程,并提供了Python代码实现。
1460

被折叠的 条评论
为什么被折叠?



