递归算法多次执行流程请教

问题遇到的现象和发生背景

关于递归的一个代码执行顺序,请大家讲解一下

问题相关代码,请勿粘贴截图

public class Digui02 {
public static void main(String[] args) {
digui(5);
}

private static void digui(int i) {

    if (i >= 2){
        digui(i-1);
    }
        System.out.println(i);
}

}

运行结果及报错内容

1
2
3
4
5

我的解答思路和尝试过的方法

请问一下大家,为什么最后会打印 2 3 4 5 以及执行流程,请大家赐教 谢谢了

我想要达到的结果

输入i = 5;即调用digui(5);
调用顺序为:先调用digui(4),再打印5
而,digui(4),先调用digui(3),再打印4
而,digui(3),先调用digui(2),再打印3
而,digui(2),先调用digui(1),再打印2
而,digui(1),打印1
因此展开后如下图:
digui(5){
digui(4){
digui(3){
digui(2){
digui(1){
System.out.println(1);
}
System.out.println(2);
}
System.out.println(3);
}
System.out.println(4);
}
System.out.println(5);
}

程序就是循环调用digui这个函数,digui(5) -- digui(4) -- digui(3) -- digui(2) -- digui(1);但是因为每次递归调用后还有System.out.println(i)这一句,所以这一句调用时的顺序是 System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); 打印出来的结果就是
1
2
3
4
5
可以debug 运行打上断点你就更清楚了


private static void digui(int i) {
 
    if (i >= 2){
        //把他放到这里点出来的就是 5   4  3  2  1
        System.out.println(i);
        digui(i-1);
    }
}