快速幂法:
class Solution {
public:
double qmul(double x, long long N){
if(N==0) return 1;
double y = qmul(x, N/2);
return N%2 == 0 ? y*y : y*y*x; //奇偶判断
}
double myPow(double x, int n) {
if(n == 0) return 1;
long long N = n;
return N > 0 ? qmul(x, N) : 1.0/qmul(x, -N);
}
};
换个写法:
class Solution {
public:
double myPow(double x, long long n) {
if(n == 0) return 1;
if(n < 0) return 1/myPow(x, -n);
if(n % 2 ) return x*myPow(x, n-1);
return myPow(x*x, n/2);
}
};