Implement pow(x, n).
Example 1:
Input: 2.00000, 10 Output: 1024.00000
Example 2:
Input: 2.10000, 3 Output: 9.26100
这道题就是实现pow函数,如果像下列代码一样直接进行迭代,会报StackOverflowError
if(n==0)
return 1.0;
if(n<0)
return 1.0/myPow(x,-n);
return x*myPow(x,n-1);
改进之后代码如下,需要注意的是需要判断一下n是否是最小int值,如果是最小的int值的话,不能直接取反进行递归:
public double myPow(double x, int n) {
if(n==0)
return 1;
else if(n>0)
{
double half = myPow(x, n/2);
if(n%2==0)
return half*half;
else
return x*half*half;
}
else
{
if(n == Integer.MIN_VALUE)
return 1.0/myPow(x,Integer.MAX_VALUE)*x;
else
return 1.0/myPow(x,-n);
}
}