資料結構5--遞迴
阿新 • • 發佈:2018-12-21
1.什麼是遞迴?
是指在定義自生的過程中有直接或間接的呼叫自身的一種演算法
2.什麼樣的問題可以用遞迴演算法?
- 一個問題可以被分解為若干的子問題
- 子問題和上層問題的解決方案一致
- 外層問題的解決依賴於子問題的解決
3.舉個例子
計算n的階乘:n! =n*(n-1)!
使用的時候要注意兩點,第一不能無限遞迴下去,那就成死迴圈了,第二要計算遞迴方法的當前值,需要重複呼叫自身直到達到停止條件為止。
/* 計算n的階乘 */ public static int getN(int n) { if (n==0) { return 1; } else { return getN(n-1)*n; } }
第二個案例:非彼拉切數列
1,1,2,3,5,8,13,21.。。。。。。
/* 斐波拉且數列 1,1,2,3,5.... */ public static int getFB(int n) { int res=0; if (n<1) { return res; } if (n==1||n==2) { return 1; } else { return getFB(n-1)+getFB(n-2); } }