class Solution {
public:
double pow(double x, int n) {
if(n == 0)
return 1;
if(n < 0)
{
if(isEven(n))
return pow(x * x, n/2);
else
return (pow(x, n + 1) * 1/x);
}
else
{
if(isEven(n))
return pow(x * x, n/2);
else
return (pow(x, n - 1) * x);
}
}
bool isEven(int n)
{
return (n % 2) == 0;
}
};
运用递归的方法,n为偶数时x^n = x^(n/2) * x^(n/2), 而n为奇数数时则要分两种情况考虑
当n<0时则x^n = x^(n+1) * (1 / x) ,当n > 0时则 x^n = x^(n-1) * x.
第一次提交时就是因为没有考虑n < 0 的情况而出错