
class Solution {
public double myPow(double x, int n) {
if (x == 0) {
return 0;
}
//如果是Integer.MIN_VALUE转换成正数会越界采用long类型接收
long newN = n;
double ans = 1;
if (newN < 0) {
x = 1 / x;
newN *= -1;
}
while (newN > 0) {
//奇数次幂就相乘
if (newN % 2 == 1) {
ans *= x;
}
//偶数次幂就自乘,幂除2
x *= x;
newN >>= 1;
}
return ans;
}
}