我确实掌握了递归的技巧(或者,我认为),但是这个问题使我绊倒了。我正在尝试返回1 + 1/2 + 1/3 + ... + 1/n,但是无论我尝试什么,该方法都将返回1.0。我无法为自己的生活弄清楚出了什么问题。

public static double harmonic(int n) {
    if(n == 1) {
        return 1;
    } else {
        return (1 / n) + (1 / harmonic(n - 1));
    }
}

最佳答案

好吧,对于一个,您不想返回(1 / n) + (1 / harmonic(n - 1)),但是您还需要使用double算法:

public static double harmonic(int n) {
    if(n == 1) {
        return 1.0;
    } else {
        return (1.0 / n) + harmonic(n - 1);
    }
}

如果您将其保留为1 / harmonic,则将完全返回另一个函数:



顺便说一句,这是一个非常令人困惑的函数,但是我认为(我第三次进行编辑)这次我做对了。

10-05 23:14