更新時間:2020-04-14 11:27:25 來源:動力節點 瀏覽2372次
遞歸是程序語言中的一個很基礎的應用,學習遞歸對理清程序編碼的思路
非常有幫助
所以在本章中把遞歸也作為學習的一部分內容。希望讀者了解并掌握它的相關用法
我們在中學時期都學過數學歸納法,例如求n的階乘
比如要求5!,必須先求出4!,而要求4!,必須先求3!,要求3!,
就必須先求2!,要求2!,必須求1!,要求1!,必須求0!而0!=1,所以1!=0!*1=1,再進而求2!,3!分別表示
讀者是否已明白?如果一個方法調用了其本身,那么這個方法就是遞歸,在這行
程序語句res=factorial5時,就會執行factorial(5),但執行factorial5時,又會調用factorial(4)這時要注意,factorial(5)和factorial(4)雖然是同一個代碼段,但在內存中,它的數據區是兩份,而執行factorial(4)時又會調用factorial(3),執行factorial(3)又會調用factorial(2),每調用一次factorial函數,就會在內存中新增一個數據區,那么這些復制了多份的函數大家可以把它看成是多個不同名的函數來理解
但上面這個函數有點問題在執行factorial(0),它又會調用factorial(-1)……,造成死循環,也就是說,在factorial函數中,需要在適當的時候保證不再調用該函數,也就是不執行res=factorial(i-1)*i這條調用語句
把上例補充完整結果如下所示
裴波納契數列一個比較定點的數學推理題,這個數列的第一位和第二位均為1,其他位數的值均為前面兩位的和,如圖4.14所示
我們試用遞歸算法求出第20位上的數值
遞歸調用在明白原理的情況下,操作起來比較容易。用遞歸來解決裝波納契數列問題的代碼如下所示
輸出結果
對于把十進制數轉換成二進制數的過程,讀者可以試著用遞歸的方式來實現,這將有助于理解遞歸的用法
以上就是動力節點java培訓機構的小編針對“Java基礎學習:java遞歸教程”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習