【发布时间】:2014-01-31 16:02:07
【问题描述】:
好的,我有一个程序:
public class Rec {
public static void main(String[] args) {
test(5);
}
static void test(int n) {
if (n > 0) {
System.out.println(n);
test(n-1);
System.out.println(n);
}
}
它的输出是 5,4,3,2,1,1,2,3,4,5。我的问题是,为什么/如何执行第二个 println(n) 语句?我认为函数调用会完全切断它,相反它的行为方式让我感到困惑。这不是作业或任何东西,我真的很难理解递归是如何工作的。
【问题讨论】:
-
你不认为函数调用永远不会返回吗?
-
使用调试器单步调试代码,您会看到。或者只是用铅笔和纸来解决。
-
铅笔和纸+1;我发现它经常有帮助。
-
我不知道如何使用调试器,从来没有人教过我。在铅笔和纸上解决它给我留下了答案 54321
-
不要忘记函数返回后的代码仍然会被执行