gpt4 book ai didi

java - 如果使用短 if,则递归函数内部的返回值不是 'work'

转载 作者:行者123 更新时间:2023-12-01 07:56:21 25 4
gpt4 key购买 nike

在 return 内部使用 short if 时,我遇到了一个无法向自己解释的奇怪问题。这段代码(见下文)应该返回值 55,但它只返回我按值传递给它的参数 10。

我已经调试了该函数,并且递归按预期工作,但它从未将 + 1 添加到返回值。

public static int add(int i) {
return i == 0 ? 0 : add(i - 1) + 1;
}

public static void main(String[] args) {
System.out.println(add(10)); // returns 10
}

这怎么行不通?

最佳答案

您的代码按照您的指示执行。在每个递归步骤中,它都会从计数器中减去 1,并将结果加 1 - 因为它正在计算 i 次,所以它将返回 i

您想要做的是将 0i 之间的数字相加。为此,您需要每次将 i 添加到总和中,而不是添加 1

public static int add(int i) {
return i == 0 ? 0 : add(i - 1) + i; // <- like this
}

由于这可能是一个练习,请考虑递归地实现阶乘以确保您理解这个概念(即,一个接受 n 并返回 n * (n-1) * 的函数(n-2) ... 等等。

关于java - 如果使用短 if,则递归函数内部的返回值不是 'work',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com