using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1


{
class Program

{
static void Main(string[] args)

{

int times = new HanoiTower(3).SolveTower();
Console.WriteLine("一共需要{0}次", times);

Console.ReadKey();
}
}

class HanoiTower

{
private int plates;
public HanoiTower(int plates)

{
this.plates = plates;
}
public int SolveTower()

{
return SolveTower(plates, "A", "B", "C");
}
private int SolveTower(int plates,string a, string b, string c)

{
int count = 0;
if (plates <= 0)
throw new ArgumentOutOfRangeException("plates","盘子数必须是大于0的整数");
if (plates == 1)

{
move(a, c);
return 1;
}
count += SolveTower(plates - 1, a, c, b);
count += SolveTower(1, a, b, c);
count += SolveTower(plates - 1, b, a, c);
return count;

}
private void move(string a, string c)

{
Console.WriteLine(a + " => " + c);
}
}
}

张旋(zxsoft)
如对本文有什么疑问,请在下面写下留言,谢谢!