遞迴與迭代

2021-09-14 05:00:14 字數 911 閱讀 4379

遞迴的基本概念:程式呼叫自身的程式設計技巧稱為遞迴,是函式自己呼叫自己.

乙個函式在其定義中直接或間接呼叫自身的一種方法,它通常把乙個大型的複雜的問題轉化為乙個與原問題相似的規模較小的問題來解決,可以極大的減少**量.遞迴的能力在於用有限的語句來定義物件的無限集合.

使用遞迴要注意的有兩點:

1)遞迴就是在過程或函式裡面呼叫自身;

2)在使用遞迴時,必須有乙個明確的遞迴結束條件,稱為遞迴出口.

遞迴分為兩個階段:

1)遞推:把複雜的問題的求解推到比原問題簡單一些的問題的求解;

2)回歸:當獲得最簡單的情況後,逐步返回,依次得到複雜的解.

利用遞迴可以解決很多問題:如揹包問題,漢諾塔問題,...等.

斐波那契數列為:0,1,1,2,3,5...

fib(0)=0;

fib(1)=1;

fib(n)=fib(n-1)+fib(n-2);

int fib(int n)

上面就是乙個簡單的遞迴呼叫了.由於遞迴引起一系列的函式呼叫,並且有可能會有一系列的重複計算,遞迴演算法的執行效率相對較低.

迭代:利用變數的原值推算出變數的乙個新值.如果遞迴是自己呼叫自己的話,迭代就是a不停的呼叫b.

遞迴中一定有迭代,但是迭代中不一定有遞迴,大部分可以相互轉換.能用迭代的不用遞迴,遞迴呼叫函式,浪費空間,並且遞迴太深容易造成堆疊的溢位.

//這是遞迴

int funca(int n)

//這是迭代

int funcb(int n)

遞迴與迭代

遞迴與迭代都是基於控制結構 迭代用重複結構,而遞迴用選擇結構。遞迴與迭代都涉及重複 迭代顯式使用重複結構,而遞迴通過重複函式呼叫實現重複。遞迴與迭代都涉及終止測試 迭代在迴圈條件失敗時終止,遞迴在遇到基本情況時終止。使用計數器控制重複的迭代和遞迴都逐漸到達終止點 迭代一直修改計數器,直到計數器值使迴...

遞迴與迭代

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

遞迴與迭代

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