遞迴 和 迭代 的 區別

2021-09-25 22:52:23 字數 916 閱讀 3624

一 概念:

遞迴:程式呼叫自身的程式設計技巧,說白了就是函式自己呼叫自己。

迭代:核心思想是通過可迭代物件,重複相同的演算法。

二  優缺點:

遞迴優點:

1)大問題化為小問題,可以極大的減少**量;

2)用有限的語句來定義物件的無限集合.;

3)**更簡潔清晰,可讀性更好

遞迴缺點:

1)由於使用系統堆疊,遞迴太深容易造成堆疊的溢位,且大量函式呼叫,執行效率也比迭代要差。

迭代優點:

1)迭代效率高,執行時間只因迴圈次數增加而增加;

2)沒什麼額外開銷,空間上也沒有什麼增加。

迭代缺點:

1) **不如遞迴簡潔;

2) 編寫複雜問題時困難。

遞迴和迭代很多時候可以互相轉換,完成同樣的功能,絕大多數時候迭代的效率更高,但具體的選擇要根據實際場景來確定。

需要注意的是,使用遞迴時,要設定好遞迴的結束條件,否則會造成無限遞迴至程式崩潰。

三、例項

使用經典的斐波那契數列來做例子

#遞迴

def fab(n):

if n == 1 or n == 2:

return 1

return fab(n-1)+fab(n-2)

fab(7)

#迭代

def fab1(n):

if n == 1 or n == 2:

return 1

f1 = 1

f2 = 1

f3 = 0

for i in range(n-2):

f3 = f1 + f2

f1 = f2

f2 = f3

return f3

fab1(8)

遞迴和迭代區別

遞迴和迭代 遞迴的實現是通過呼叫函式本身,函式呼叫的時候,每次呼叫時要做位址儲存,引數傳遞等,這是通過乙個遞迴工作棧實現的。具體是每次呼叫函式本身時需要儲存的內容有區域性變數 形參 函式位址等,那麼,如果遞迴呼叫n次,則遞迴棧裡需要儲存n 區域性變數,n 形參,n 函式位址個記憶體空間,很可能導致空...

遞迴和迭代的區別

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

遞迴和迭代的區別

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