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

kac*_*ous 1 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);   
 }
Run Code Online (Sandbox Code Playgroud)

我几乎可以肯定这应该可以工作,但基本上所有东西都返回1.0.

Eva*_*ski 7

您正在使用整数除法.把它变成双重:

return (1/(double)n) + sum(n-1);
Run Code Online (Sandbox Code Playgroud)

或者,使用:

return (1.0/n) + sum(n-1);
Run Code Online (Sandbox Code Playgroud)