Implement pow(x, n).
题意:实现pow(x, n)
思路:二分;设pow(x, n/2)=q, 则pow(x, n)= n%2==0? q*q : q*q*x。n是负数是,pow(x,n)= pow(1/x, -n)。
class Solution {
public:
double myPow(double x, int n) {
if (x == 0 || x == 1)
return x;
if (n == 0)
return 1;
if (n < 0){
if (n == INT_MIN)
return binaryPow(1 / x, INT_MAX)*(1 / x);
return binaryPow(1 / x, -n);
}
return binaryPow(x, n);
}
double binaryPow(double x, int n){
if (n == 1)//terminal condition
return x;
double q = myPow(x, n / 2);
return n % 2 == 0 ? q*q : q*q*x;
}
};