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