计算x的n次方。n为整数。
- -100.0 < x < 100.0
- n 是 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]
中等题。
这个题大家应该都能想到递归的方式计算,这里主要记录一下官方给的非递归解法。
递归的代码如下:
public double simPow(double x, int n){
//double tmp;
if(n == 0)
return 1.0;
double tmp = simPow(x,n/2);
return n % 2 == 0 ? tmp * tmp : tmp * tmp * x;
}
public double myPow(double x, int n) {
double res;
if(x == 0.00)
return x;
if(n >= 0){
res = simPow(x,n);
}else {
res = 1/simPow(x,Math.abs(n));
}
return res;
}
非递归官方解法: