1. 程式人生 > 實用技巧 >C#資料結構與算法系列(十二):遞迴(Recursion)

C#資料結構與算法系列(十二):遞迴(Recursion)

1.介紹

簡單的說:遞迴就是方法自己呼叫自己,每次呼叫時傳入不同的變數,遞迴有助於程式設計者解決複雜的問題,同時也讓程式碼變得整潔

2.規則

執行一個方法時,就建立一個新的受保護的獨立空間(棧空間)

方法的區域性變數是獨立的,不會相互影響,比如n變數

如果方法中使用的是引用型別變數(比如陣列),就會共享該引用型別的資料

遞迴必須向退出遞迴條件逼近,否則就是無限遞迴了,出現StackOverflowError,死龜

當一個方法執行完畢,或者遇到return,就會返回,遵守誰呼叫,就將結果返回給誰,同時當方法執行完畢或者返回時,該方法也就執行完畢

3.遞迴能解決什麼問題

1.各種數學問題如:八皇后問題,漢諾塔,階乘問題,迷宮問題等

2.各種演演算法也會使用到遞迴,比如快排、歸併排序,二分查詢,分治演演算法

4.示例:列印問題、階乘問題

1.圖解:

2.程式碼示例

    public class RecursionTest
{
public static void Test(int num)
{
if (num > )
{
Test(num - );
} System.Console.WriteLine("num=" + num);
} public static int Factorial(int num)
{
if (num == )
{
return ;
} return Factorial(num - ) * num;
} public static void RecursionDemo()
{
Test(); System.Console.WriteLine("\n5的階乘是:"+Factorial());
}
}

3.演示圖