程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#遞歸解決漢諾塔問題(Hanoi),

C#遞歸解決漢諾塔問題(Hanoi),

編輯:C#入門知識

C#遞歸解決漢諾塔問題(Hanoi),


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

namespace MyExample_Hanoi_
{
    class Program
    {
        static void Main(string[] args)
        {
            HanoiCalculator c = new HanoiCalculator();
            Console.WriteLine(c.CalculateHanoi(64));//括號內可更改盤數
        }
    }

    class HanoiCalculator
    {
        public ulong CalculateHanoi(int count)//count:盤子數
        {
            ulong stepForOnlyCurrentDish = 1;//搬動一個盤子只需要1步
            if (count == 1)
            {
                return stepForOnlyCurrentDish;//漢諾塔至少要一個盤子
            }
            ulong totalSteps = stepForOnlyCurrentDish + CalculateHanoi(count - 1)*2;//stepForOnlyCurrentDish搬動“最後一個”大盤子“只要一步+這個大盤子之上的那些盤子要構成漢諾塔所需步數(使用遞歸)+再把那些盤子搬回來
            return totalSteps;
        }
    }
}

//這個例子是猛哥(劉鐵猛)(也算是我的正式老師)講的,注釋部分我根據自己的理解加了一些,和網友們一起交流,共同進步!;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved