快速幂。处理当指数为负数时的情景,还要注意int32的数据范围。
class Solution {
public double myPow(double x, int n) {
if(x==0)
return 0;
double res=1;
long b=n;
if(n<0)
{
x=1/x;
b=-b;//用long存储是因为int32的数值范围在边界条件转化会出错
}
//快速幂
while(b>0){
if((b&1)==1)
res=res*x;
x=x*x;
b>>=1;
}
return res;
}
}