男出轨 法庭辩护:谁能写个简单的算法程序解决"汉诺塔"问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 22:54:22

以前写过,好像用函数的递归调用,你在百度搜搜肯定有

最简单的写法是递归写法, 而非递归写法也能做到, 只是很麻烦!
下面这一页的, 不光能看, 还能玩~ :)

什么是简单呢
是 源程序简短
还是 算法的运行复杂度低

如果是前者就用递归来
否则就用非递归来

void move(char x,char y)
{
printf("%c座-->%c座 ",x,y);
}
void hanoi(int n,char one,char two,char three)
{
if(n<=0) printf("error!\n");
else
{
if(n==1) move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}}
main()
{
int m;
clrscr();
printf("请输入要移动的盘数:");
scanf("%d",&m);
printf("您要移动的盘数是 %3d 个:\n",m);
hanoi(m,'A','B','C');
getch();
}