日期:2014-05-18  浏览次数:20775 次

如何实现power?
1.只用加减
2.用recursion

eg. power(2,3) => 8 

------解决方案--------------------
逻辑大概是这样,divide方法没写,没检查LZ写的divide方法是否正确,
	public static double power(int x, int n) {
// 如果指数为0,返回1
if (n == 0) return 1;
// 如果指数为复数,返回power(x, -n)的倒数
if (n < 0)
return divide(1, power(x, -n));
// 存放结果的变量
double result = 0;
// 低次幂的值
double lower = power(x, n - 1);

// 如果数值大于0,相加x遍
if (x >= 0) {
for (int i = 0; i < x; i++) {
result += lower;
}
}
// 否则相减x遍
else {
for (int i = 0; i > x; i--) {
result -= lower;
}
}
return result;
}

供你参考^_^
------解决方案--------------------
那可能是divide方法的问题,
我把return divide(1, power(x, -n));改为 return 1 / power(x, -n);

测试2,-43跟Math.pow()结果是一样的