很多學習演算法程式設計的朋友雖然對著兩個詞並不陌生,但是一看到要選擇這兩個詞時容易把其搞混,下面來嘗試分析下著兩個詞的區別之處:
首先是遞迴:遞迴是一種演算法,一種思想,有些演算法**如果用非遞迴的方法去寫或許很複雜,但是用遞迴的方法或許只要一兩行**,遞迴固然有它的好處,那什麼是遞迴呢?遞迴的通俗定義就是程式自身呼叫自身,這種由自身呼叫自身的思想大多體現在函式上:例如在乙個函式本身的**上再呼叫函式本身,當還是不滿足邊界條件時,那麼繼續做遞迴,直到滿足遞迴條件,才開始回退到上一層遞迴開始處,學過「棧」的朋友應該直到棧是後進先出的,遞迴用到了棧這種後進先出的結構,最後的出去才能讓前面壓入棧的資料出去,但是遞迴也帶來很多問題:例如子問題重疊、資料量過大到導致的時間開銷和空間開銷過大溢位等等,所以在一般的軟體開發並不提倡用遞迴的思想去解決問題。
其次是迭代:其實迭代是很好理解的,對於乙個可以用迭代處理的大問題,分成可以分步進行若干步,當前面乙個小問題的值確定後代入迭代式可以算出另乙個較大問題的值,繼而可以再次代入迭代式算出更大問題的值,以此類推,直到最終的問題解決
例如迭代式:(b=0;
a=b+1;
b=a;)如果對a=b+1;
b=a;進行n次迭代,a的值顯而易見。
通過比較發現:遞迴思想其實是從整體尋找到部分再到整體-》問題解決;
而迭代則是從部分一步一步走到整體-》問題解決。
遞迴和迭代 迭代與遞迴
很多程式設計小白都會遇到 迭代 和 遞迴 的問題 包括我自己 大部分同學還是不知道迭代與遞迴的區別。下面我就嘗試用最通俗易懂的模式講解遞迴與迭代的區別。1.迭代 迭代其實很簡單,我們在程式設計中經常用到迭代。比如說 i 1 print i 這個就是乙個迭代,沒想到吧。迭代的意思其實就是在迴圈 現了參...
遞迴和迭代
遞迴和迭代是兩種常用的演算法,很多人知道怎麼寫遞迴和迭代,但是不知道什麼時候該用遞迴,什麼時候該用迭代。下面的 分別通過使用遞迴和迭代計算fibonacci數列,可以很清楚的看到效率的驚人差別。當然,很難有個準則說什麼時候該用遞迴,什麼時候該用迭代,但有乙個很簡單的判斷方法 如果你的遞迴呼叫是在函式...
遞迴和迭代
分享自 酷勤網 www.kuqin.com 遞迴函式 遞迴可以描述不同的概念,如果說乙個函式是遞迴的,那麼就是說函式的定義中 直接或者間接地 引用了該函式本身。比如求斐波那契數列,使用swift實現 func fib n int intreturn fib n 1 fib n 2 從函式定義看,fi...