递归思路:
- 如果n == 0,返回1;
- 如果n < 0,最终结果为 1/x^(-n);
- 如果n为奇数,最终结果为 x * x ^ (n - 1)
- 如果n为偶数,最终结果为 x ^ (2*(n/2))
Java中因为n的最小值可以取到Integer.MIN_VALUE,如果直接取它的相反数的话还是它自己,会导致堆栈溢出,因此提一个x出来
public double myPow(double x, int n) {
if(n == 0){
return 1.0;
}else if(n < 0){
return 1 / (x * myPow(x,-n-1));
}else if(n % 2 == 1){
return x*myPow(x,n-1);
}else{
return myPow(x*x,n/2);
}
}