資料結構與演算法之遞迴演算法 C++和PHP實現

來源:互聯網
上載者:User
遞迴演算法:就是一種直接或間接調用自身的演算法。

實現過程:通過函數或者子過程來完成,在函數或者子過程中編寫代碼直接或間接的調用自己,即可完成遞迴操作。(相同類別的問題,把問題層層轉換為規模縮小的子問題到最小問題有 已知條件,然後 來求解,然後得到結果逐級返回。其實也是一種迴圈。)

最主要體現: 小的代碼量解決了非常複雜的問題

特點:

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);?>

運行結果:

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.