遞迴演算法:就是一種直接或間接調用自身的演算法。
實現過程:通過函數或者子過程來完成,在函數或者子過程中編寫代碼直接或間接的調用自己,即可完成遞迴操作。(相同類別的問題,把問題層層轉換為規模縮小的子問題到最小問題有 已知條件,然後 來求解,然後得到結果逐級返回。其實也是一種迴圈。)
最主要體現: 小的代碼量解決了非常複雜的問題
特點:
1、遞迴就是方法裡調用自身
2、必須有一個明確的遞迴結束條件,稱為遞迴出口。
3、簡潔但是運行效率較低,一般不提倡使用
4、每一層的返回點、局部變數等開闢了棧來儲存,遞迴次數過多容易造成棧溢出。
執行個體1:求階乘
C++代碼:
#includeint factorial(int n);int main(){ using namespace std; int n; cout << "請輸入一個數字:"; cin >> n; cout << n << "的階乘為: " << factorial(n) < 運行結果:
執行個體2:數制轉換
代碼:
#include#includevoid feelTheBase(char *s, int n, int sys);int main(){ using namespace std; char s[60]; int n,sys; cout << "請輸入一個整數:"; cin >> n; cout << "請輸入要轉換的進位類型(2,8,16):"; cin >> sys; feelTheBase(s, n, sys); cout << n << "轉換成" << sys << "進位結果為: " << s < 運行結果:
執行個體3: 列出某個目錄下所有的子目錄和檔案(還可以用 scandir函數更方便 )
PHP實現代碼:
"; rec($dir.'/'.$file, $lev+1); }else { echo str_pad('',$lev, "--").$file."
"; } } closedir($dh);}$dir = "./";rec($dir);?> 運行結果: