剑指 Offer 16. 数值的整数次方
快速幂
因为n<0
时,n
可能会等于-2147483648
,这时候n=-n
就会溢出,简单的方式就是转换成long long
class Solution {
public:
double myPow(double x, int n) {
long long tn=n;
double res=1;
if(n>0){
while(n){
if(n&1)res*=x;
n>>=1;
x*=x;
}
return res;
}
else if(tn<0){
tn=-tn;
while(tn){
if(tn&1)res*=x;
tn>>=1;
x*=x;
}
return 1.0/res;
}
else return 1;
}
};