遞迴與迭代

2021-05-24 13:42:03 字數 668 閱讀 2015

遞迴與迭代都是基於控制結構:

迭代用重複結構,而遞迴用選擇結構。

遞迴與迭代都涉及重複:

迭代顯式使用重複結構,而遞迴通過重複函式呼叫實現重複。

遞迴與迭代都涉及終止測試:迭代在迴圈條件失敗時終止,遞迴在遇到基本情況時終止。使用計數器控制重複的迭代和遞迴都逐漸到達終止點:迭代一直修改計數器,直到計數器值使迴圈條件失敗;遞迴不斷產生最初問題的簡化副本,直到達到基本情況。迭代和遞迴過程都可以無限進行:如果迴圈條件測試永遠不變成false,則迭代發生無限迴圈;如果遞迴永遠無法回推到基本情況,則發生無窮遞迴。

遞迴有許多缺點,它重複呼叫機制,因此重複函式呼叫的開銷很大,將占用很長的處理器時間和大量的記憶體空間。每次遞迴呼叫都要生成函式的另乙個副本(實際上只是函式變數的另乙個副本).從而消耗大量記憶體空間。迭代通常發生在函式內,因此沒有重複呼叫函式和多餘記憶體賦值的開銷。那麼,為什麼選擇遞迴呢?

舉個例子

迭代:int fib[n];

fib[0]=1;fib[1]=1;

for(i=2;ifib[i]=fib[i-1]+fib[i-2];

遞迴:int fib(int n)

遞迴與迭代

1 遞迴 當函式用自身來定義時就稱為是遞迴 recursive 的。遞迴必須滿足四個基本法則 1 基本情形 必須給出基準情況,不用遞迴就能求出,用於終止遞迴運算 2 不斷推進 對於那些要被遞迴求解的情形,遞迴呼叫必須能夠朝著乙個基準情形推進 3 設計法則 假設所有的遞迴呼叫都能執行 4 合成效益法則...

遞迴與迭代

遞迴是什麼?簡單來說,就是函式自己調自己的一種方法。通常可以把乙個大型複雜的問題轉化為乙個與原問題相似的規模較小的問題來求解。遞迴的兩個必要條件 以下用幾個例項來說明 題目一 接受乙個無符號整數,把它轉化為字元並列印它。void print int n printf d n 10 int main ...

遞迴與迭代

遞迴的基本概念 程式呼叫自身的程式設計技巧稱為遞迴,是函式自己呼叫自己.乙個函式在其定義中直接或間接呼叫自身的一種方法,它通常把乙個大型的複雜的問題轉化為乙個與原問題相似的規模較小的問題來解決,可以極大的減少 量.遞迴的能力在於用有限的語句來定義物件的無限集合.使用遞迴要注意的有兩點 1 遞迴就是在...