主题思想: n 的取值范围 n<0, 0, n>0
快速幂算法
public double quickPow(double x,int n){
if(n==0) return 1.0000;
double ans=1.0;
while(n!=0){
if(n%2!=0){
ans=ans*x;
}
x*=x;
n/=2;
}
return ans;
}
考虑问题:
AC代码:
class Solution {
public double myPow(double x, int n) {
boolean divide= n<0? true: false;
n=Math.abs(n);
double ans=quickPow(x,n);
if(divide)
ans=1.0/ans;
return ans;
}
public double quickPow(double x,int n){
if(n==0) return 1.0000;
double ans=1.0;
while(n!=0){
if(n%2!=0){
ans=ans*x;
}
x*=x;
n/=2;
}
return ans;
}
}
本文介绍了一种高效的计算x^n的方法——快速幂算法,并提供了一个Java实现示例。该算法通过位运算将指数n拆分为若干个2的幂次之和,从而大幅度减少乘法操作的次数。
518

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



