
题目分析
x的n次方,常规思路是将x循环进行n次相乘
可以使用递归逐级相乘,将 n / 2 进行逐级递归,若是遇到奇数就先减一再除以2
特殊情况
- n为负数时是将 1/x 进行 n 次相乘
- n为0时,x恒等于1
代码如下
# Python3
class Solution:
def myPow(self, x: float, n: int) -> float:
if n<0:
return self.myPow(1/x, -n)
if n==0:
return 1
if n==2:
return x*x
return self.myPow(self.myPow(x, n/2), 2) if not n%2 else x*self.myPow(self.myPow(x,(n-1)/2),2)
//Java
public double myPow(double x, int n){
if (n == 0) return x=1;
else if (n > 0 && n % 2 == 0) return myPow(x * x, n / 2);
else if (n > 0) return myPow(x, n - 1) * x;
else return myPow(1 / x, -n);
}
本文深入解析了快速幂运算的原理及实现,通过递归方法优化传统幂运算过程,特别讨论了正负指数情况下的处理策略,适用于高效计算场景。
594

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



