主题思想: 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;
}
}