递归行后代码会发生什么?

时间:2017-07-30 13:09:46

标签: java recursion

我想问一下递归线后代码究竟发生了什么?

以下是示例代码:

public static void method(int index){
    --index;
    if (index < 0) {
       return;
    }


    method( index);
    System.out.println(index);

}

我的问题是为什么sout在递归线之后以相反的顺序打印我的数字:0 1 2 3 4

提前致谢。

2 个答案:

答案 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