为什么这个 Java 代码输出“3210123”?
Why does this Java code output "3210123"?
public static void downup(int n) {
System.out.println(n);
if(n>0) {
downup(n-1);
System.out.println(n);
}
}
看到这段代码,不明白为什么n为3时输出的是3210123,只能理解为“3210”。其余的输出(“123”)呢?
执行可以这样形象化:
downup(3)
println(3)
downup(3-1)
println(2)
downup(2-1)
println(1)
downup(1-1)
println(0)
condition false, recursion stopped
return
println(1)
return
println(2)
return
println(3)
return
每次 downup()
被调用(递归),缩进增加。当从 downup()
执行 returns 时,缩进减少。
public static void downup(int n) {
System.out.println(n);
if(n>0) {
downup(n-1);
System.out.println(n);
}
}
看到这段代码,不明白为什么n为3时输出的是3210123,只能理解为“3210”。其余的输出(“123”)呢?
执行可以这样形象化:
downup(3)
println(3)
downup(3-1)
println(2)
downup(2-1)
println(1)
downup(1-1)
println(0)
condition false, recursion stopped
return
println(1)
return
println(2)
return
println(3)
return
每次 downup()
被调用(递归),缩进增加。当从 downup()
执行 returns 时,缩进减少。