剑指 Offer 16. 数值的整数次方
思路
快速幂法:对x求9次幂,那么x ^ 9 = x ^ (1001)=x ^ ( 1
∗
*
∗ 2 ^ 3+ 1
∗
*
∗ 2 ^ 0)
因此,只要把幂拆分成二进制来计算即可
代码
public double myPow(double x, int n) {
if(x==0)return 0;
long b=n;
double res=1;
if(b<0){
b=-b;
x=1/x;
}
while(b>0){
if((b&1)==1)res*=x;
x*=x;
b>>=1;
}
return res;
}