C# 漢諾塔(Hanoi)的遞歸解法

C# 漢諾塔(Hanoi)的遞歸解法

解法思路分三個部分:

  • 挪走最下面的那個盤子之上的所有盤子
  • 挪走最下面的那個盤子
  • 將前面挪走的盤子重新挪回最後一個盤子之上
using System;

namespace Hanoi
{
    class Program
    {
        static void Main(string[] args)
        {
            HanoiCalculator c = new HanoiCalculator();
            Console.WriteLine("請輸入漢諾塔的層數");
            Console.WriteLine("所需步數:{0}",c.CalculteHanoi(int.Parse(Console.ReadLine())));
        }
    }

	// 創建一個類
    class HanoiCalculator
    {
    	// 遞歸方法
        public ulong CalculteHanoi(int count)
        {
            ulong stepForOnlyCurrentDish = 1;
            if (count == 1)
            {
                return stepForOnlyCurrentDish;
            }
            ulong totalSteps = stepForOnlyCurrentDish + CalculteHanoi(count - 1) * 2;
            return totalSteps;
        }
    }
}

ps:技術有限只能挪動 64 層的漢諾塔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章