遞迴演算法與迭代演算法的區別

2021-09-10 23:42:33 字數 638 閱讀 3658

舉個例子:我想求1+2+3+4+..+100的值。

迭代的做法:從1到100,順著往下累加。1+2=3,3+3=6,6+4=10,10+5=15……

程式表示,

int i=1,sum=0;

while(i<=100)

遞迴的做法:我要求1到100的累加值,如果我已經得到1到99的累加值,將這個值加上100就是1到100的累加值;要得到1到99的累加值,如果已經得到1到98的累加值,將這個值加上99,就是1到99的累加值……最後我要得到1到2的累加值,我如果得到1自身累加值,再加上2即可,1自身的累加值顯然就是1了。於是現在我們得到了1到2的累加值,將這個值加3就得到了1到3的累加值,……最後直到得到1到100的累加值。

程式表示,其中函式會呼叫自身,這就是遞迴方法的典型特徵

int getsum(int n)

上述例子中,其實遞迴最後得到結果也是用迭代方法完成的,只是在程式的處理上直**不出來。兩者都能很好的完成計算任務,不同之處在於思維方式上,從而導致不同的計算方法:迭代是正向思維,從頭到尾思考問題;遞迴是逆向思維,他假設我們已經得到了部分結果(假設我已經知道了1到99的累加值,把這個值加上100我們就得到了1到100的累加值了),從尾部追溯到頭部,從而讓問題簡化(當然這個例子中看不出來,這裡只是方便理解)

迭代演算法與遞迴演算法概述

遞迴 recursive 的基本概念 程式呼叫自身的程式設計技巧稱為遞迴,是函式自己呼叫自己。迭代 iterative 的基本概念 利用變數的原值推算出變數的乙個新值,如果遞迴是自己呼叫自己的話,迭代就是a不停的呼叫b。遞迴與迭代都是基於控制結構 迭代用重複結構,而遞迴用選擇結構。遞迴與迭代都涉及重...

演算法之美 遞迴與迭代

演算法之美 遞迴與迭代 其實遞迴最大的有點就是把乙個複雜的演算法分解成若干相同的可重複的步驟。所以,使用遞迴實現乙個計算邏輯往往只需要很短的 就能解決,並且這樣的 也比較容易理解。但是,遞迴就意味著大量的函式呼叫。函式呼叫的區域性狀態之所以用棧來記錄的。所以,這樣就可能浪費大量的空間,如果遞迴太深的...

遞迴與迭代的區別

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