遞迴思想的原理與應用 Recursion

2021-07-23 23:00:19 字數 1447 閱讀 4793

函式自己呼叫自己本身

method()

或methoda

methodb()

將乙個複雜的問題分解成幾個相同的簡單問題

遞迴需要出口

在進行迴圈時,每當一次迴圈結束,迴圈的結果作為下次迴圈的初始值,而上次迴圈占用的記憶體就會被系統釋放。因此迴圈可以沒有出口而不停無限迴圈下去。

而在進行遞迴時,程式是按層次進行下去的。每次函式執行到呼叫自身時,都會進行下一層,而上次的函式是沒有執行完畢的。因此,每一輪得到的值都會存在記憶體中而不被釋放。就像檢索乙個檔案時,要先從最上層開始,一層一層向下檢索,在未檢索到目的檔案之前,上層開啟的資料夾一直都不會關閉。

因此,遞迴雖然相比於迴圈來說,遞迴演算法的**複雜度明顯減小,但消耗的代價則是大量的記憶體。因此,當寫乙個遞迴程式時,必須新增出口,否則當記憶體被佔滿時就會報錯。

1),可以分解成幾個情況相同的問題;

2),必須有乙個退出出口,否則就會因為記憶體被占用光而出現堆疊溢位

1),遞推  —— 函式呼叫自己的部分

2),回歸  —— 函式中遞推之外的部分

1,1+2+....+n

//遞迴(累加1到n)

package recursion;

public class recursion

else

} public static void main(string args)

}

2,乘法表(迴圈)

package recursion;

public class multiplication

system.out.println();

} return m;

} public static void main(string args)

}

3,乘法表(遞迴)

package recursion;

public class multi_recursion

else

system.out.println();

} }public static void main(string args)

}

4,斐波那契數列

package recursion;

public class fibonacci

} public static void main(string args)

}

5,漢諾塔(遞迴)—— 將n個盤子從p1移動到p3

public class hanotower 

else

} public static void main(string args)

}

遞迴的思想與應用

遞迴是一種數學上分而自治的思想,將原問題分解為規模較小的問題進行處理,分解後的問題與原問題的型別完全相同,但規模較小,通過小規模問題的解,能夠輕易求得原問題的解,但是問題的分解是有限的,當邊界條件滿足時,遞迴結束直接求解否則遞迴繼續進行,在程式設計中遞迴函式就是遞迴的體現,遞迴模型的一般表示法如下 ...

六 遞迴的思想與應用

遞迴是一種數學上分而治之的思想 將原問題分解為規模較小的問題進行處理 分解後的問題與原問題的型別完全相同,但規模較小 通過小規模問題的分解,能夠輕易求得原問題的解 問題的分解是有限的 遞迴不能無限進行 當邊界條件不滿足時,分解問題 遞迴繼續進行 當邊界條件滿足時,直接求解 遞迴結束 遞迴在程式設計中...

43 遞迴的思想與應用1

遞迴是一種數學上分而自治的思想 將原問題分解為規模較小的問題進行處理。分解後的問題與原問題的型別完全相同,但規模較小。通過小規模問題的求解,能夠輕易求得原問題的解。問題的分解是有限的 遞迴不能無限進行 當邊界條件不滿足時,分解問題 遞迴繼續進行 當邊界條件滿足時,直接求解 遞迴結束 地規模型的一般表...