●遞歸的概念
1、遞歸就是方法自己調用自己,每次調用時傳入不同的變量。
2、遞歸有助於編程者解決複雜的問題,同時可以讓代碼變得簡潔。
●遞歸的調用規則
1、當程序執行到一個方法時,就會開闢一個獨立的空間(棧)。
2、每個空間的數據(局部變量)是獨立的。
示例:
public static void main(String args[]){
test(4);
}
public static void test(int n){
if(n>2){
test(n-1);
}
System.out.println("n="+n)
過程分析圖:
運行結果:
n=2
n=3
n=4
●遞歸解決的問題
1、數學問題:8皇后、漢諾塔、階乘、迷宮問題等;
2、快排、歸併排序、二分查找、分治算法;
3、可以將棧的相關問題轉化爲遞歸問題,更簡單方便。
●遞歸需要遵守的重要規則
1、執行一個方法時,就創建一個新的受保護的獨立空間(棧空間)。
2、方法的局部變量是獨立的,壞會相互影響,比如上面示例中的n變量。
3、如果方法中使用的是引用類型變量(比如數組),就會共享該引用類型的數據。
4、遞歸必須向退出遞歸的條件逼近,否則就是無限遞歸,會出現StackOverflowError。
5)、當一個方法執行完畢,或者遇到return, 就會返回,遵守誰調用,就將結果返回給誰,同時當方法執行完畢或者返回時,該方法也就執行完畢。