遍歷演算法 遞迴思想

2021-09-03 08:41:07 字數 1204 閱讀 2899

先遞推,再回歸:方法定義中呼叫方法本身的現象。  --------------------------  數學歸納法的思想

注意事項:

1.要有

出口,否則就是死遞迴

2.次數不能太多,否則就記憶體溢位

3.構造方法不能遞迴使用

案例一:兔子問題

(斐波那契數列

) -----------------------------------  前後兩數的商無限接近於

**分割比例

:0.618

有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問第十個月的兔子對數為多少?

分析:f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2)...

public class demo01 

//遞迴寫法 ---- 數學歸納法

public static int birth(int n) else

} //非遞迴寫法

public static int birth2(int n)

for(int i=3;i<=10;i++)

return m2;

}}

案例二:猴子吃桃問題

小猴子第一天摘下若干桃子,當即吃掉一半,又多吃乙個.第二天早上又將剩下的桃子吃一半,又多吃乙個.以後每天早上吃前一天剩下的一半另乙個.到第10天早上猴子想再吃時發現,只剩下乙個桃子了.問第一天猴子共摘多少個桃子?

分析:10 -- 1     9 -- (1+1)*2     8 -- ((1+1)*2+1)*2     ......

public class demo02 

//遞迴寫法

public static int sub(int m) else

} //非遞迴寫法

public static int sub2(int m)

for(int i=2;i<=m;i++)

return n;

}}

遞迴演算法思想

在知乎上面搜尋遞迴,但是普遍的回答是業務開發中不常涉及,和for迴圈差不多,消耗效能太大,不推薦使用。本著不服管的性格,我差了一些有用的資料,和大家分享下,遞迴的演算法和使用場景。為什麼要用遞迴 程式設計裡面估計最讓人摸不著頭腦的基本演算法就是遞迴了。很多時候我們看明白乙個複雜的遞迴都有點費時間,尤...

遞迴演算法思想

遞迴演算法就是在程式中不斷反覆呼叫自身來達到求解的方法。這裡的重點就是呼叫自身,這就是要求待求解的問題能夠分解為相同問題的乙個子問題。這樣通過多次遞迴呼叫,便可以完成求解。函式的遞迴呼叫分兩種情況 直接遞迴和間接遞迴。直接遞迴,即在函式中呼叫函式本身。間接遞迴,即間接呼叫乙個函式,如fun 1呼叫f...

演算法 遞迴思想

給定乙個字串 該字串沒有相同的字母 使用遞迴的方式列印出這個字串所包含字母的所有組合方式 package test1 public class num f c,0 c為待遞迴陣列,先確定第乙個字元,再確定第二個.b為所有已確定字元位的後乙個字元位 static void f char c,int b...