题目描述
实现pow(x, n),它计算x的n 次方。
解决
代码:
- 递归实现
//递归
public double myPow(double x, int n) {
if(n==0) return 1;
if (n == Integer.MIN_VALUE) {
return (1/x) * myPow(x, n + 1);
}
if(n<0) {
n = -n;
x = 1/x;
}
return (n % 2)== 0 ? myPow(x*x,n/2) : x*myPow(x*x,n/2);
}
- 非递归实现
public double myPow1(double x, int n) {
if(n==0) return 1;
if (n == Integer.MIN_VALUE) {
return (1/x) * myPow(x, n + 1);
}
if(n<0) {
n = -n;
x = 1/x;
}
double ans = 1;
while(n > 0){
if(n % 2 != 0)
ans *= x;
x *= x;
n /= 2;
}
return ans;
}