package ;
public class Digui {
public static void main(String[] args) {
Digui.sysOut1(4);
/* 对于递归,先正向到达深度的最深4-3-2-1,然后按照深入的逆序1-2-3-4回头执行正向深入时尚未执行的部分.正着走一遍,必须反着走一遍,无论正着的一遍是怎样结束的.
* 4
3
2
1【正向深入到最深处的位置】
0
最后一句
-99【这里开始逆向回头N=1。逆序回头到N为1时未执行完的部分为第2句和第3句,执行第2句时,先执行4《结果就是上面的-99》,再执行3《结果就是这里的“最后一句”》,这里是第2句执行的编号为4 的结果】
最后一句【这里是第2句执行的编号为3的结果】
最后一句【这里是第3句的结果,是逆序回头到N为1时执行完第2句之后再执行的这个第3句,,这样就解释了为什么连续两次递归最后一句要执行两次】
-98【逆序回头到N为2时未执行完的部分sysOut1(N-100);】
最后一句【逆序回头到N为2时未执行的打印("最后一句");】
最后一句【逆序回头到N为2时未执行的打印("最后一句");】
-97
最后一句
最后一句
-96
最后一句
最后一句 */
}
public static void sysOut1(int N){
System.out.println(N);//4
if(N>0){
sysOut1(N-1);//1
sysOut1(N-100);//2
}
System.out.println("最后一句");//3
}
}