我想问一下递归线后代码究竟发生了什么?
以下是示例代码:
public static void method(int index){
--index;
if (index < 0) {
return;
}
method( index);
System.out.println(index);
}
我的问题是为什么sout在递归线之后以相反的顺序打印我的数字:0 1 2 3 4
提前致谢。
答案 0 :(得分:0)
在每次打印之前,您调用方法(编号-1)
当达到-1时,您开始从0开始调用递归堆栈,直到您的号码为index
堆栈堆积,我们不断从堆栈中弹出最后一个:
0
1
...
number-1
number
答案 1 :(得分:0)
您的应用程序是单线程的,因此所有指令都是一个接一个地执行。
调用方法后,在方法完成后调用下一行。
您执行method(4)
的原因如下:
method(4)
method(3)
method(2)
method(1)
method(0)
method(-1)
- 这里,没有更多的递归调用 - 方法在再次调用method
之前返回。看,它返回,所以我们回到method(0)
执行 - print 0
被执行。然后我们返回并完成method(1)
:
print 0
print 1
print 2
print 3
print 4