總目錄:地址如下看總綱
1、何為遞歸?
遞歸就是方法自己調(diào)用自己,每次調(diào)用時(shí)傳入不同的變量.遞歸有助于編程者解決復(fù)雜的問題,同時(shí)可以讓代碼變得簡(jiǎn)潔。
2、遞歸運(yùn)行機(jī)制
image.png
image.png
image.png
image.png
3、遞歸的應(yīng)用場(chǎng)景
1、各種數(shù)學(xué)問題如: 8皇后問題 , 漢諾塔, 階乘問題, 迷宮問題, 球和籃子的問題(google編程大賽)
2、各種算法中也會(huì)使用到遞歸,比如快排,歸并排序,二分查找,分治算法等.
3、將用棧解決的問題-->遞歸代碼比較簡(jiǎn)潔
4、遞歸必須遵守的規(guī)則
1、執(zhí)行一個(gè)方法時(shí),就創(chuàng)建一個(gè)新的受保護(hù)的獨(dú)立空間(??臻g) --- 默認(rèn)遵守了(main)
2、方法的局部變量是獨(dú)立的,不會(huì)相互影響, 比如n變量
3、如果方法中使用的是引用類型變量(比如數(shù)組),就會(huì)共享該引用類型的數(shù)據(jù).(上圖堆中的)
4、遞歸必須向退出遞歸的條件逼近,否則就是無限遞歸,出現(xiàn)StackOverflowError,棧溢出)
5、當(dāng)一個(gè)方法執(zhí)行完畢,或者遇到return,就會(huì)返回,遵守誰調(diào)用,就將結(jié)果返回給誰,同時(shí)當(dāng)方法執(zhí)行完畢或者返回時(shí),該方法也就執(zhí)行完畢。



