我有这个奇怪的问题,我无法向自己解释,当使用short if if return.这段代码(见下文)应返回值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
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
您的代码完成了您所说的内容.在每个递归步骤中,它从计数器中减少一个并将结果加1 - 因为它计算i时间,它将返回i.
你现在要做的是总结从数字0到i.为了做到这一点,你需要每次添加i而不是1总和.
public static int add(int i) {
return i == 0 ? 0 : add(i - 1) + i; // <- like this
}
Run Code Online (Sandbox Code Playgroud)
由于这可能是一个练习,考虑递归地实现阶乘以确保您理解概念(即,获取n和返回的函数n * (n-1) * (n-2) ...等等).
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |