汉诺塔这种东西不能从程序的角度想 要从生活的角度想 原来从堆栈进出角度考虑就特别复杂 有些事是一层窗户纸 想多了反而没用
if a上面只剩下一个盘子 移到c else 把n-1的盘子移到b a->c b->c
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1.基础.算法
{
public class 汉诺塔
{
int count = 1;
void move(int n,char x, char y)
{
Console.Write("第" + count + "次 " + n + ":{0}-->{1}\n", x, y);
}
void hanoi(int n, char one, char two, char three)
{
if (n == 1)
{
move(n,one, three);
count++;
}
else
{
hanoi(n - 1, one, three, two);
move(n,one, three);
count++;
hanoi(n - 1, two, one, three);
}
}
public void main1()
{
int m;
Console.WriteLine("input the number of disks:");
m=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the step to moving %3d diskes:\n", m);
hanoi(m, 'A', 'B', 'C');
}
}