定理
n^2k = (n^k)*(n^k),
n^(2k+1) = (n^k)*(n^k)*n,
n^-(2k+1)=(n^-k)*(n^-k)*(1/n).
所以代码如下
public double pow(double x, int n) {
if (n == 0)
return 1;
double temp = x;
temp = pow(x, n / 2);
if (n % 2 == 0)
return temp * temp;
else {
if (n > 0)
return x * temp * temp;
else
return (temp * temp) / x;
}
}