【愚公系列】2021年11月 C#版 數(shù)據(jù)結(jié)構(gòu)與算法解析(遞歸)
1.介紹

簡單的說:遞歸就是方法自己調(diào)用自己,每次調(diào)用時(shí)傳入不同的變量,遞歸有助于編程者解決復(fù)雜的問題,同時(shí)也讓代碼變得整潔
2.規(guī)則
執(zhí)行一個(gè)方法時(shí),就創(chuàng)建一個(gè)新的受保護(hù)的獨(dú)立空間(棧空間)
方法的局部變量是獨(dú)立的,不會(huì)相互影響,比如n變量
如果方法中使用的是引用類型變量(比如數(shù)組),就會(huì)共享該引用類型的數(shù)據(jù)
遞歸必須向退出遞歸條件逼近,否則就是無限遞歸了,出現(xiàn)StackOverflowError,死龜
當(dāng)一個(gè)方法執(zhí)行完畢,或者遇到return,就會(huì)返回,遵守誰調(diào)用,就將結(jié)果返回給誰,同時(shí)當(dāng)方法執(zhí)行完畢或者返回時(shí),該方法也就執(zhí)行完畢
3.遞歸能解決什么問題
1.各種數(shù)學(xué)問題如:八皇后問題,漢諾塔,階乘問題,迷宮問題等
2.各種算法也會(huì)使用到遞歸,比如快排、歸并排序,二分查找,分治算法
4.示例:打印問題、階乘問題
1.圖解:
2.代碼示例
public class RecursionTest { public static void Test(int num) { if (num > 2) { Test(num - 1); } System.Console.WriteLine("num=" + num); } public static int Factorial(int num) { if (num == 1) { return 1; } return Factorial(num - 1) * num; } public static void RecursionDemo() { Test(4); System.Console.WriteLine("\n5的階乘是:"+Factorial(5)); } }
3.演示圖
性能分析:遞歸是存在棧里面的,相當(dāng)于俄羅斯套娃。,容易照成程序崩潰
C# 數(shù)據(jù)結(jié)構(gòu)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。