思路
仅考虑n大于0的情况,如果n是负数,可以n=-n;x=1/x;
拿n=10,x=2.0举例,n=10(10进制)=1010(二进制);
2.010=2.0(8+2)=2.08 2.02
程序中,可以用n&1==1?来判断最低位是否为1
这样就会减少运算,降低时间复杂度
class Solution {
public double myPow(double x, int n) {
double an=1.0;
long b=n;
if(b<0)
{
b=-b;
x=1/x;
}
while(b>0)
{
if((b & 1)==1)
{
an*=x;
}
x*=x;
b>>=1;
}
return an;
}
}