好的,所以我有一个程序:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
它的输出是5,4,3,2,1,1,2,3,4,5.我的问题是,为什么/如何执行第二个println(n)语句?我认为函数调用会完全切断它,而是以令我困惑的方式行事.这不是家庭作业或任何事情,我真的很难理解递归是如何工作的.
一旦完成,所有方法调用都会返回到同一个地方.
通过有效地链接他们,你得到
System.out.println(5)
System.out.println(4)
System.out.println(3)
System.out.println(2)
system.out.println(1)
// If is not true now.
System.out.println(1)
System.out.println(2)
System.out.println(3)
System.out.println(4)
System.out.println(5)
Run Code Online (Sandbox Code Playgroud)
那有意义吗?