程式設計基礎/遞迴與迭代
外觀
< 程式設計基礎
介紹遞迴,並使用迴圈作為重複演算法解決方案的替代方法。包括用於計算階乘的 C++ 程式設計程式碼。
"一般來說,編寫重複演算法有兩種方法。一種使用迴圈;另一種使用遞迴。遞迴是一種重複過程,其中一個函式呼叫自身。兩種方法都提供重複性,並且可以互相轉換。"[1] 迭代是控制結構的類別之一。它允許零到多次處理某些操作。迭代也被稱為迴圈和重複。數學術語“迭代”是指執行迴圈語句部分。許多問題/任務需要使用重複演算法。在大多數程式語言中,這可以透過以下兩種方式實現:
- 迴圈控制結構,特別是 for 迴圈(迭代方法)
- 遞迴呼叫函式
在許多數學相關的問題中,重複演算法作為解決方案方法出現。包括階乘、斐波那契數列和漢諾塔問題。這些問題的解決方案通常只以遞迴方法的形式呈現。然而,“... 您應該瞭解遞迴的兩個主要限制。首先,遞迴解決方案可能涉及大量開銷,因為它們使用函式呼叫。其次,每次呼叫都會消耗一些記憶體分配。如果遞迴很深 - 也就是說,如果存在大量遞迴呼叫 - 那麼您可能會耗盡記憶體。階乘和斐波那契數列的解決方案都最好用迭代的方式來開發。"[2]
瞭解遞迴或迭代方法的工作原理將留給其他人。它們通常作為資料結構學習的一部分被詳細介紹。我們介紹它們的目的是
- 為您提供遞迴的定義
- 介紹迭代的替代解決方案方法
以下示例程式展示了 8! (八階乘)的兩種解決方案。
根據您的編譯器/IDE,您應該決定在哪裡下載和儲存原始碼檔案以進行處理。謹慎起見,您應該在下載原始碼檔案之前根據需要建立這些資料夾。Bloodshed Dev-C++ 5 編譯器/IDE 的建議子資料夾名稱為:
- Demo_Programs
如果您還沒有這樣做,請根據需要建立資料夾和/或子資料夾。
將以下檔案下載到您的儲存裝置中的相應資料夾中。按照您的編譯器/IDE 的方法,編譯並執行程式。結合其他學習資料學習原始碼檔案。
從 Connexions 下載:Demo_Factorial.cpp
- 遞迴
- 一個重複的過程,其中一個函式呼叫自身。
- 階乘
- 一個經常使用遞迴解決的數學問題。