演算法之美 遞迴與迭代

2021-09-23 16:23:25 字數 695 閱讀 1663

演算法之美-遞迴與迭代

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

接下來分析迭代。其實,遞迴都可以用迭代來代替。但是相對於遞迴的簡單易懂,迭代就比較生硬難懂了。尤其是遇到乙個比較複雜的場景的時候。但是,**的難以理解帶來的有點也比較明顯。迭代的效率比遞迴要高,並且在空間消耗上也比較小。

遞迴中一定有迭代,但是迭代中不一定有遞迴,大部分可以相互轉換。

能用迭代的不要用遞迴,遞迴呼叫函式不僅浪費空間,如果遞迴太深的話還容易造成堆疊的溢位。

public class diguidiedai 

//迭代求fib數列

int total = 0;

int a =1;

for(int i=0;i<19;i++)

}private static int fib(int n) if(n==1) else }

private static int diguijiec(int n)

return diguijiec(n-1)*n;

}}

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

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

資料結構與演算法之美 8 遞迴演算法

遞迴嚴格說起來不算一種演算法,只能說是一種問題處理思想或者問題處理技巧。只要問題同時滿足以下三個條件,就可以考慮用遞迴來解決 乙個問題的解可以分解為幾個子問題的解 這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣 存在遞迴終止條件 個人覺得,寫遞迴 最關鍵的是寫出遞推公式,找到終止條件...

《演算法之美》 遞迴 數值型

為什麼是數學歸納法?有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階 3階。請實現乙個方法,計算小孩有多少種上樓的方式。為了防止溢位,請將結果mod 1000000007 給定乙個正整數int n,請返回乙個數,代表上樓的方式數。保證n小於等於100000。public class 9 ...