iT邦幫忙

2021 iThome 鐵人賽

DAY 19
2
自我挑戰組

C# 雞礎觀念系列 第 19

[Day19]C# 雞礎觀念- 讓時間倒轉吧~遞迴

電視可以倒帶,
然後重播,
喜歡看幾次就看幾次,
C#中也能讓程式倒帶,重新執行,
執行到滿意為止

遞迴/images/emoticon/emoticon58.gif

  • 遞迴就是在方法中呼叫方法自己
  • 通常會使用遞迴的程式碼都比較簡潔
  • 遞迴通常執行效率較低

範例:我們來讓20一直倒扣到0,然後喊出新年快樂吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //呼叫遞迴方法
            Fac(20);
            
            Console.WriteLine("新年快樂!");
            Console.ReadKey();
        }
    //宣告一個遞迴方法
        static void Fac(int n)
        {
            Console.WriteLine("n = " + n);
            //如果n等於0之後就不呼叫自己
            if (n != 0)
            {
                Fac(n - 1);
            }
        }
    }
}

結果:

n = 20
n = 19
n = 18
n = 17
n = 16
n = 15
n = 14
n = 13
n = 12
n = 11
n = 10
n = 9
n = 8
n = 7
n = 6
n = 5
n = 4
n = 3
n = 2
n = 1
n = 0
新年快樂!

進階練習:/images/emoticon/emoticon32.gif

費波那契數列:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //宣告一個整數,看要輸出多少項
            int n = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Fibonacci : ");
            for (int i = 1; i <= n; i++)
            {
                //輸出費波那契數列的第i項
                Console.Write(Fibonacci(i) + "\t");

                //每輸出五項換一行
                if ((i % 5) == 0)
                {
                    Console.WriteLine();
                }
            }

            Console.ReadKey();
        }

        //宣告方法
        static int Fibonacci(int n)
        {
            if (n == 1 || n == 2)
            {
                //初始值
                return 1;
            }
            else
            {
                //遞迴
                return (Fibonacci(n - 1) + Fibonacci(n - 2));
            }
        }


    }
  }

輸入:

30

輸出:

30
Fibonacci :

1       1       2       3       5
8       13      21      34      55
89      144     233     377     610
987     1597    2584    4181    6765
10946   17711   28657   46368   75025
121393  196418  317811  514229  832040

這就一個C#倒帶按鍵的故事~/images/emoticon/emoticon34.gif


上一篇
[Day18]C# 雞礎觀念- 回頭吧!孩子~ref 與 out 參數修飾詞
下一篇
[Day20]C# 雞礎觀念- 物件導向(oop)基本觀念
系列文
C# 雞礎觀念32

尚未有邦友留言

立即登入留言