java - 简单的递归减法返回意外结果

标签 java algorithm recursion

我正在尝试为我的一个项目找出递归。然而,它给了我一个意想不到的结果,它在达到基本情况后开始向后工作。我制作了这个简单的片段来演示。如果我将 3 传递给此方法,预期值将为 0。但是它返回 2 作为结果。有人可以解释一下为什么 i 在达到 0 后开始增加。提前致谢!

public static int sub(int i) {
    if (i > 0) {
        i--;
        sub(i);
    }
    return i;
}

最佳答案

您忽略了 sub(i) 返回的值。

你可以写:

public static int sub(int i) {
    if (i > 0) {
        i--;
        return sub(i);
    }
    return i;
}

或者只是

public static int sub(int i) {
    return (i > 0) ? sub(i-1) : i;
}

关于java - 简单的递归减法返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60650463/

相关文章:

java - 用 Java 创建 Pokémon 类

java - 我需要使用 SQLiteOpenHelper 吗?

c++ - 识别曲线直线部分的算法

python - 合并列表中具有相同头部的元组

recursion - F#类型的递归树结构

java - SQlite WHERE 语句不起作用?

java - 如何合并包含 PDF 和图像的文档?

algorithm - 0 到 n 范围内的随机数

haskell - 可以用未装箱的向量进行递归定义吗?

java - 我如何在java中递归地重新排列字符串