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