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 層的漢諾塔