2017-07-28 76 views
0

任何人都可以解釋如何代碼打印1至10?任何人都可以解釋這個代碼如何打印1到10?

class demo 
{ 

    public static void main(String[] args) 
    { 
     display(10);  
    } 
    private static void display(int n) 
    { 
     if (n > 1) 
     { 
      display(n - 1); 
     } 
     System.out.println(n); 
    } 
} 
+6

試着在紙上做(從2或3這樣的小數字開始)。你會更好地理解。 – litelite

+0

我只能理解,直到它打印1,之後不清楚執行如何發生。 –

+1

只需逐行閱讀代碼。並在紙上跟蹤'n'的值。或者你可以嘗試用調試器來調試代碼,然後檢查變量。 – litelite

回答

0

所以主要方法運行的顯示方法,並傳遞值10之後,值被檢查,看它是否大於1(它是)。下一個。顯示方法再次被調用,值爲n-1,在這種情況下爲9。最後,打印出10個。

現在9經歷同樣的循環。 9大於1,並顯示值爲n-1,現在爲8.打印出9,現在8通過顯示方法。這種情況持續發生,直到值爲1,在這種情況下,1不大於1,打印出1並退出程序。

這被稱爲遞歸方法,如果你想更多地研究它。

1

這是遞歸調用顯示方法。這裏傳遞給display方法的參數值存儲在一個堆棧中。當if條件失敗時,則返回n的值,如果從堆棧移出並由行「System.out.println(n)」打印。 換句話說,每次通過傳遞一個數字調用顯示方法時,數字將被存儲在一個堆棧中,以便當代碼從遞歸中出來時,它將使用堆棧中的數字。

做空運行,你可以看到何時值1傳遞給顯示方法,如果條件失敗,下一行打印值1然後2將被打印,這是堆棧等等,它將打印到10這是通過的第一個值。

+0

Tadah! :)很好回答Shubham! –

+0

@Kanstantsin感謝兄弟:) –

相關問題