算术递归

Joh*_*ith 6 java recursion

我正在尝试编写一个代码来计算给定整数的以下内容n:

1/1 + 1/2 + 1/3 ... + 1/n
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止编写的代码:

public class RecursiveSum
{
  public static double Sumto(int n)
  {
    if (n == 0) { return 0.0; }
    else if (n > 0) { return 1/n + 1/Sumto(n - 1); }
    else { throw new IllegalArgumentException("Please provide positive integers"); }
  }
  public static void main(String[] args)
  {
    System.out.println(Sumto(5));
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,它始终输出:

Infinity
Run Code Online (Sandbox Code Playgroud)

有什么问题,我该如何解决?

谢谢

Era*_*ran 10

你有两个问题:

您必须执行浮点除法(如更换1/n1.0/n),你应该添加Sumto(n - 1)1.0/n拿到Sumto(n).

  public static double Sumto(int n)
  {
    if (n == 0) { return 0.0; }
    else if (n > 0) { return 1.0/n + Sumto(n - 1); }
    else { throw new IllegalArgumentException("Please provide positive integers"); }
  }
Run Code Online (Sandbox Code Playgroud)

你得到的理由Infinity1/Sumto(n - 1)回报Infinity的时候Sumto(n - 1)0.0Sumto(0)0.0.