C#語言函式遞迴

Crystal7003發表於2018-03-17

一、什麼是函式遞迴? 

在計算機語言中,遞迴是指在函式的定義中使用函式自身的方法。藉助遞迴方法,我們可以把一個相對複雜的問題轉化為一個與原問題相似的規模較小的問題來求解,遞迴方法只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的程式碼量。但在帶來便捷的同時,也會有一些缺點:執行效率不太高。

 

二、遞迴函式的特點

1)    在函式裡呼叫自身;

2)    遞迴函式通常程式碼簡潔清晰;,

3)    遞迴函式會一直呼叫,直到某些條件被滿足,我們稱之為遞迴出口 

4)    遞迴函式執行效率較低。

 

三、走入遞迴函式

已知:

一個數n的階乘,記作:n!,它等於1*2*3*...*n

要求:

用遞迴的思想完成一個函式,該函式用於求某個數的階乘

分析:

用遞迴的方法,也可以理解為n的階乘等於n乘以n-1的階乘:n!=n*(n-1)!

當n=1時,n!=1;

Step1: 

定義一個求n的階乘的函式: static int result(int n)

當n=1時,n!=1;

當n>1時,n!=n*(n-1)!

 

Step2:

將上述分析過程寫成程式碼,則為:      

static int result(int n)

  {

if (n==1)

               return 1;

      else

               returnn*result(n-1);

    }

 

Step3:

從主函式裡呼叫上述函式,獲取使用者輸入的值,求它的階乘。

static void Main(string[] args)

{

Console.Write("請輸入一個數:");

int n = int.Parse(Console.ReadLine());

Console.WriteLine("這個數的階乘為:"+result(n));

}

 

四、常見遞迴函式案例

1.求階乘之和

static void Main(string[] args)

        {

           Console.Write("請輸入一個數:");

            int n= int.Parse(Console.ReadLine());

            int sum=0;

            for(inti=1;i<=n;i++)

               sum+=result(i);

            Console.WriteLine("這個數的階乘之和為:"+sum);

        }

 

static int result(int n )

    {

           if (n== 1)

               return 1;

           else

           {return n * result(n - 1); }

}

 

2.計算n*(n-1)+(n-1)(n-2)+(n-2)*(n-3)+……+2*1數列的結果

static void Main(string[] args)

        {

           Console.Write("請輸入一個數(大於1):");

            int n= int.Parse(Console.ReadLine());   

            int sum=0;

            for(inti=n;i>=2;i--)

            sum+=result(i);

            Console.WriteLine(sum);

        }

static int result(int n )

    {

           if (n== 2)

               return 2;

           else

               return 2*(n-1)+result(n- 1);

    }

 


相關文章