遞歸函數

    遞歸函數即自調用函數,在函數體內部直接或間接地自己調用自己,即函數的嵌套調用是函數本身。通常在此類型的函數體之中會附加一個條件判斷敘述,以判斷是否需要執行遞歸調用,並且在特定條件下終止函數的遞歸調用動作,把目前流程的主控權交回上一層函數執行。因此,當某個執行遞歸調用的函數沒有附加條件判斷敘述時,可能會造成無限循環的錯誤情形。

    函數遞歸調用最大的好處在於可以精簡程序中的繁雜重複調用程序,並且能以這種特性來執行一些較爲複雜的運算動作。例如,列表,動態樹型菜單及遍歷目錄等操作。相應的非遞歸函數雖然效率高,但卻比較難編程,而且相對來說可讀性差。鼓勵用遞歸函數實現程序思想。一個簡單的遞歸調用如下所示:

    在上例中聲明瞭一個test()函數,該函數需要一個整型的參數。在函數外面通過傳遞整數10作爲參數調用test()函數。在test()函數體中,第一條代碼輸出參數的值和兩個格。然後判斷條件是否成立,成立則調用自己並將參數減1再次傳入。開始調用時,他是外層掉內層,內層調更內層。知道最內層條件不允許必須結束。最內層結束了,輸出“<-->”作爲分界符,執行調用後的代碼輸出參數的值和兩個空格,它就會回到稍外一層繼續執行,稍微一層再結束時,退到再稍微一層繼續執行,層層退出,直到最外層結束。執行後的結果就是我們上面所看到的。遞歸函數有點兒像電影《盜夢空間》的劇情模式,我(高洛峯)猜想編劇以前有可能和我們是同行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章