代碼:
package demo;
public class ShuangDiGui {
public static void main(String[] args) {
print(5);
}
public static void print(int n) {
if(n>0) {
print(n-1);
print(n-4);
}
System.out.println("n的值:"+n);
}
}
結果

程序詳解:
第一步: 前6次遞回都是執行print(n-1),0-5入堆疊,
第二步:此時堆疊頂為0,不大于0,所以if結構體不執行,0出堆疊,堆疊頂1大于0,執行if結構,print(n-1)取到元素1,注意此時堆疊頂元素并沒有被洗掉,繼續執行print(n-4),此時遞回陳述句中斷1的出堆疊,轉為執行-3的入堆疊,此時堆疊頂是-3了,不滿足大于0,直接出堆疊,

第三步:之前說print(n-1)中斷了1的出堆疊,轉而執行print(n -4),print(n-4)執行后,print(n-1)繼續執行,1出堆疊,如圖,

第四步:2大于0,執行if結構體,print(n-1)取到2,執行print(n-4),中斷print(n-1)洗掉2的操作,得到-2,-2入堆疊,-2不滿足if,直接出堆疊,此時繼續之前的洗掉,2出堆疊,



后續程序依次類推,
執行到5時,需注意5-4=1大于0,print(n-4)會執行,將1壓入堆疊,所以會有




有問題,歡迎大家斧正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261715.html
標籤:java
