Pow(x, n)
Implement pow(x, n).
解题技巧:
在求pow(x,n)时,可以求pow(x, n/2),这样算法的时间复杂度为o(logn)。此外,在求解的过程中,注意INT_MIN与INT_MAX的转化,
INT_MAX +1 = abs(INT_MIN)
代码:
double myPow(double x, int n)
{
double res, half;
if(n == 0) return 1;
if(n < 0)
{
if(n == INT_MIN)
return 1.0 / (myPow(x,INT_MAX)*x);
else
return 1.0 / myPow(x, -n);
}
half = myPow(x,n/2);
if(n % 2 == 0)
{
res = half * half;
}
else
{
res = half * half * x;
}
return res;
}