快速幂算法
double digui(double x, int n){
//递归出口
if(n==1)return x;
double y;
y = digui(x,n/2);
//如果是奇数多乘一次x
return n%2 == 0 ? y*y :y*y*x;
}
class Solution {
public:
double myPow(double x, int n) {
//特殊值情况
if(n == 0)return 1;
if( (x == -1 ||x == 1) && n%2 == 0)return 1;
if( x == -1 && n%2!=0)return -1;
if(n>INT_MAX||n<=INT_MIN&&x!=1)return 0;//x!=1很重要(可删但是不删效果更好)
if(n<0){
x=1/x;
n=-n;
}
double a=digui(x,n);
return a;
}
};