题目
Implement pow(x, n).
思路
递归的方式,递归关系可以表示为
pow(x,n) = pow(x,n/2)*pow(x,n-n/2),从而将时间复杂的降到O(logn)
代码
class Solution {
public:
double myPow(double x, int n) {
if(n==0)
return 1.0;
if(n<0) {
if(n==INT_MIN) ///注意处理这种情况
return 1.0 / (myPow(x, INT_MAX)*x);
else
return 1.0/ myPow(x,-n);
} else {
if(n%2==0) {
double tmp = myPow(x, n>>1);
return tmp * tmp;
} else {
double tmp = myPow(x, (n-1)>>1);
return x*tmp*tmp;
}
}
}
};