我需要帮助理解这个递归函数
private int findFactorial(int n) {
if (n == 0) {
return 1;
} else {
return (n * findFactorial(n - 1));
}
}
我的问题,当n == 0时,函数返回1,那么为什么函数的最终返回不是1及其阶乘。 我试过断点。在n == 0的最后一次运行中,它进入"如果"条件和"否则"条件,如何控制输入if和else
编辑:日食显示控件正在输入if / else。编辑,因为它引起了读者的困惑,我的主要问题与递归有关,而不是为什么eclipse显示这种有线行为
答案 0 :(得分:0)
您可能误解了调试器告诉您的内容。当n
为零时,您将执行if分支。在return 1
之后,接下来要执行的是在findFactorial
的封闭式调用中的其他分支。再次检查。
(你不会/不应该/将不会同时获得"如果"和#34;否则"分支在同一findFactorial
电话中执行。如果不知何故那将是一个Eclipse bug。)
答案 1 :(得分:0)
案例n = 2:
现在n = 1
现在n = 0
希望这有帮助