什麼是遞迴?用Java寫一個簡單的遞迴程式遞迴的定義
遞迴(recursion):以此類推是遞迴的基本思想,將規模大的問題轉化為規模小的問題來解決。
遞迴的要素自定義遞迴函式,並確定函式的基本功能例如Java從鍵盤輸入一個數,求輸入這個數的階乘。這個時候把輸入的數字作為形參int diGuiTest(int n ){}
找到遞迴函式迴圈結束條件在求階乘的時候,我們不妨做出如下思考,例如輸入的n是5,那麼5!是5 * 4 3 * 2 * 1,那是不是可以寫成n f(n-1)?,程式執行過程如下:5* f(4)f(4)相當於重新呼叫了函式,形參為45 * 4* f(n-1)f(3)相當於重新呼叫了函式,形參為35 * 4* 3* f(n-1)f(2)相當於重新呼叫了函式,形參為25 * 4* 3 * 2* f(n-1)f(1)相當於重新呼叫了函式,形參為1很容易發現,這時候如果遞迴呼叫到n為1的時候,就要結束呼叫自身程式碼如下:int diGuiTest(int n ){if(n==1){return 1;}else{return n*f(n-1);}}
程式碼示例求1–100之間所有自然數的和
int sum (int n ){if(n==1){return 1 ;}else{return n+sum(n-1);}}12345678
斐波拉契數列斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家萊昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波那契數列以如下被以遞推的方法定義:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2) (n ≥ 2,n ∈ N*)
int fibonacci(int n ){if (n<=1){return n;}else {return fibonacci(n-1)+fibonacci(n-2);}}
漢諾塔問題首先我們考慮最簡單的情況:將最上面的一塊放到B,再將最下面一塊放到C,再把最上面一塊從B放到C即可
public class Hanio { public static void main(String[] args) { char A='A'; char B='B'; char C='C'; hannio(3,A,B,C); } static void hannio(int paltfrom,char A,char B, char C){ if (paltfrom==1){ move (A,C); }else { hannio(paltfrom-1,A,C,B);//上面兩個盤子,透過C柱到B柱 move (A,C); hannio(paltfrom-1,B,A,C);// } } static void move(char A,char B){ System.out.println(A+"---->"+B); }}
熱門排行
- GC類壓力管道安裝資質辦理,氨製冷(冷庫)管道定期檢驗程序
- 幾種PCBA表面處理的類型
- 歌禮制藥-B(01672)宣佈口服PD-L1小分子抑制劑前藥ASC61 用於治療晚期實體瘤的美國I期臨床試驗完成首例患者給藥
- 深耕CRO服務領域 宣泰醫藥(688247.SH)擬首次公開發行4534萬股
- 壓力容器許可證資質辦理,鉻鉬鋼製壓力容器結構設計規定
- 家裡有點地,這種果樹種上兩棵,栽到花盆裡,夏天就能結果子
- 家裡養株“大將軍”蘭花,花色喜慶,花大如盆,打理很簡單
- 庫存飆升!韓國半導體庫存激增80%
- 多點DMALL合夥人劉桂海:多點DMALL實踐實體零售數字化轉型
- 豬各階段拉稀的原因和解決方案,這篇文章告訴你答案,值得收藏