题目描述:
Implement pow(x, n).
Example 1:
Input: 2.00000, 10 Output: 1024.00000
Example 2:
Input: 2.10000, 3 Output: 9.26100
运用递归,对n不断二分,时间复杂度为O(logn),但是需要考虑n为负数对情况,在C++中负奇数模2等于-1,所以对于n为奇数对情况需要分开讨论。
class Solution {
public:
double myPow(double x, int n) {
if(n==0) return 1;
double root=myPow(x,n/2);
if(n%2==0) return root*root;
else if(n>0&&n%2==1) return root*root*x;
else if(n<0&&n%2==-1) return root*root/x;
}
};