下面的函数接受一个整数n并返回前n个倒数的总和。 sum(2)应该返回1.5
这就是我所拥有的:
public double sum(int n) {
if (n < 0) {
throw new IllegalArgumentException("Illegal Power Argument");
}
double zero = 0.0;
if(n == 0)
return zero;
else
return (1/n) + sum(n-1);
}
我几乎可以肯定这应该可行但是它基本上都会返回1.0。
答案 0 :(得分:7)
您正在使用整数除法。把它投两个:
return (1/(double)n) + sum(n-1);
或者,使用:
return (1.0/n) + sum(n-1);
答案 1 :(得分:1)
(1/n)
是整数除法 - 改为使用(1.0/n)
。
答案 2 :(得分:0)
尝试此更改:
return (1.0/n) + sum(n-1);