class Solution {
public:
bool is_positive = false;
double traversal(double x, int n){
if(n == 0){
return 1.0;
}
if(n == 1){
return x;
}
//问题可以说是在这里
double res = traversal(x, n > 1);
res *= res;
if(n & 0x1 == 1){
res *= x;
}
return res;
}
double myPow(double x, int n) {
long index= abs(n); //操作用的幂
double res = traversal(x, index);
if( n < 0 ){
res = 1 / res;
}
return res;
}
};
使用移位的时候, 当n == -2147483648的时候, 栈溢出;
但是把移位换成除法, 会通过, 具体原因还在研究, 估计是和二进制运算有关