遞迴VS迴圈

2021-10-06 06:29:30 字數 542 閱讀 5405

2

好處壞處

遞迴1 多維度問題,適用範圍廣

2 **簡潔

3 只需關注問題本質

1 呼叫系統棧,低效

2 不省空間!

迴圈1 不呼叫系統棧,高效

2 省空間

1 適用範圍有限

2 **容易臃腫

3 每個細節都要考慮到

用迴圈能實現,遞迴都能實現

遞迴能實現的,迴圈不一定能!

給某個小孩子買玩具。

遞迴:你不了解小孩需求,為了縮小範圍,讓你兒子給孫子選。

兒子比你強點,但有限,依然不太了解小孩需求。為了縮小範圍,兒子讓你孫子去選。

如此這般,直到找到合適的玩具。

迭代:你挑了一件覺得不行,又挑了一件又不行。直到找到合適的玩具。

所以遞迴是自己調自己,每次縮小問題規模

迭代是自己執行很多次,每次更接近目標

遞迴形象表示:

迴圈與遞迴

優缺點 迴圈效率更高,遞迴容易理解 是大家普遍的觀點。儘管兩種想法在時間複雜度和空間複雜度上是等價的。但遞迴的有乙個弱勢 函式呼叫開銷如引數傳遞和堆疊之類的開銷,會導致在層次過深的時候,系統崩潰。遞迴是用棧機制實現的 c 每深入一層,都要占去一塊棧資料區域,對巢狀層數深的一些演算法,遞迴會力不從心,...

遞迴與迴圈

遞迴與迴圈 大一學c 的時候,老師說過遞迴與迴圈是可以相互轉化的,當時好像是用來兩重迴圈解決遞迴問題,演算法的複雜度依然是o n 最近發現可以通過模擬實現棧結構通過一重迴圈實現非遞迴演算法。遞迴必須滿足以下兩個條件 首先我們給出乙個最簡單的遞迴實現,演算法的目的是為了得到乙個大於等於10的數字。1 ...

遞迴和迴圈

從功能上來說,所有用遞迴實現的都可以用迴圈實現,只不過有時候遞迴實現方便一些,從效率上說,迴圈一般都是大於遞迴的。如果要處理的問題的深度不大,我認為遞迴和迭代的效率差不多。遞迴是消費棧空間,先遞推 壓棧 然後回歸 逐步釋放占用的棧 如果遞迴的深度比較大的話會很消耗記憶體,如果沒有終止條件會導致棧溢位...