迴圈和遞迴的異同

2021-07-05 12:44:09 字數 461 閱讀 8428

演算法其實還是很有意思的 慢慢研究 收穫會很大

簡單的來講解一下 迴圈與遞迴的異同

1.相同:

遞迴與迴圈都是解決 重複操作的機制

2.不同

就演算法效率而言,遞迴演算法的實現往往要比迭代演算法消耗更多的時間(呼叫和返回均需要額外的時間)

與儲存空間(用來儲存不同次呼叫情況下變數的當前值得棧空間)也限制了遞迴的深度。

每個迭代演算法原則上總可以轉換成與它等價的遞迴演算法,反之不然。

遞迴的層次是可以控制的,而循巢狀的層次只能是固定的,因此遞迴是比迴圈更靈活的重複操作機制。

遞迴演算法解題通常有三個步驟

1.分析問題 尋找遞迴 找出最大規模問題 與最小規模問題的關係 這樣通過遞迴使問題的規模逐漸變小

2.設定邊界、控制遞迴、找出停止條件 也就是說演算法可解的最小規模問題

3.設計函式、確定引數 和其他演算法模組一樣設計函式中的操作及相關操作

遞迴和迴圈

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

遞迴和迴圈

很早之前看到過一段關於遞迴的解釋覺得很nice 今天寫了四道關於遞迴迴圈的題 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39 f n f n 1 f n 2 第一眼看就是遞迴啊,簡直完美的遞迴環境,遞迴肯定很爽,這樣想著關鍵 兩三行就搞定了,注意這題的n是從0...

迴圈和遞迴

改為遞迴的關鍵是發現邏輯的 相似性 不要忘記遞迴的 出口 例子 使用遞迴模擬迴圈 列印0到9 public staitc void main string args 修改 列印0 n public static void f int n 接下來我們實現公升序的遞迴,比如列印0到9,這裡為了更一般化,...