对于本题,当幂为n=-2147483648时,首先将n+1,再取绝对值后计算剩余的值:pow(x,-(n+1)),最终结果为x*pow(x,-(n+1))。
double myPow(double x, int n)
{
if (x == 0) return 0.0;
if (n == 0) return 1.0;
double ans = 1.0;
if (n > 0)
{
ans = myPowRecursive(x, n);
return ans;
}
else
{
ans = x * myPowRecursive(x, -(n + 1));
return 1.0 / ans;
}
}
double myPowRecursive(double x, int n)
{
if (n == 0) return 1.0;
if (n == 1) return x;
double res;
res = myPowRecursive(x, n/2);
if (n % 2 == 1)
return x * res * res;
else
return res * res;
}
参考: