快速幂法
思路:对于偶数次方直接将x翻倍,同时阶数除以2
对于奇数次方,直接乘以之前累计的结果
代码:
class Solution {
public double myPow(double x, int n) {
double result=1;
double temp=x;
long p=n;
p=Math.abs(p);
while(p>0){
//对于奇数次方,直接乘以之间的累计结果
if(p%2==1){
result*=temp;
}
//对于偶数次方,将x翻倍,同时阶数除以2
temp*=temp;
p/=2;
// if((p&1)==1){
// result*=temp;
// }
// temp*=temp;
// p>>=1;
}
return n>0?result:1.0/result;
}
}