遞迴的基本概念:程式呼叫自身的程式設計技巧稱為遞迴,是函式自己呼叫自己.
乙個函式在其定義中直接或間接呼叫自身的一種方法,它通常把乙個大型的複雜的問題轉化為乙個與原問題相似的規模較小的問題來解決,可以極大的減少**量.遞迴的能力在於用有限的語句來定義物件的無限集合.
使用遞迴要注意的有兩點:
1)遞迴就是在過程或函式裡面呼叫自身;
2)在使用遞迴時,必須有乙個明確的遞迴結束條件,稱為遞迴出口.
遞迴分為兩個階段:
1)遞推:把複雜的問題的求解推到比原問題簡單一些的問題的求解;
2)回歸:當獲得最簡單的情況後,逐步返回,依次得到複雜的解.
利用遞迴可以解決很多問題:如揹包問題,漢諾塔問題,...等.
斐波那契數列為:0,1,1,2,3,5...
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2);
[cpp]view plain
copy
intfib(
intn)
上面就是乙個簡單的遞迴呼叫了.由於遞迴引起一系列的函式呼叫,並且有可能會有一系列的重複計算,遞迴演算法的執行效率相對較低.
迭代:利用變數的原值推算出變數的乙個新值.如果遞迴是自己呼叫自己的話,迭代就是a不停的呼叫b.
遞迴中一定有迭代,但是迭代中不一定有遞迴,大部分可以相互轉換.能用迭代的不用遞迴,遞迴呼叫函式,浪費空間,並且遞迴太深容易造成堆疊的溢位.
[cpp]view plain
copy
//這是遞迴
intfunca(
intn)
//這是迭代
intfuncb(
intn)
遞迴與迭代的區別
遞迴的基本概念 程式呼叫自身的程式設計技巧稱為遞迴,是函式自己呼叫自己.乙個函式在其定義中直接或間接呼叫自身的一種方法,它通常把乙個大型的複雜的問題轉化為乙個與原問題相似的規模較小的問題來解決,可以極大的減少 量.遞迴的能力在於用有限的語句來定義物件的無限集合.使用遞迴要注意的有兩點 1 遞迴就是在...
遞迴與迭代的區別
遞迴和迭代都是迴圈的一種。遞迴是重複呼叫自身函式實現迴圈 迭代是函式內某段 實現迴圈。迭代與普通迴圈的區別是 迭代迴圈中,參與運算的變數同時是儲存結果的變數,當前儲存的結果做為下一次迴圈的初始值 如 v v 1 遞迴與迭代都是基於控制結構 迭代用重複結構,而遞迴用選擇結構。遞迴與迭代都涉及重複 迭代...
遞迴與迭代的區別
以下是乙個用遞迴階乘的例項 include intcal int num if num 0 return num cal num 1 此處開始自身呼叫 int main 再來乙個斐波那契數列的遞迴函式 include intcal int n return cal n 1 cal n 2 對此,總結...