我正在尝试为我的一个项目找出递归。然而,它给了我一个意想不到的结果,它在达到基本情况后开始向后工作。我制作了这个简单的片段来演示。如果我将 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/