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 层的汉诺塔

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