对前n个recriprocals求和的递归函数

时间:2011-05-06 14:33:24

标签: java recursion

下面的函数接受一个整数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。

3 个答案:

答案 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);