汉诺塔这种东西不能从程序的角度想 要从生活的角度想 原来从堆栈进出角度考虑就特别复杂 有些事是一层窗户纸 想多了反而没用
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');
}
}
转载于:.html
本文发布于:2024-01-28 23:47:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170645687811177.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |