当前位置: 代码迷 >> C语言 >> 关于汉诺塔问题
  详细解决方案

关于汉诺塔问题

热度:541   发布时间:2007-03-30 01:58:13.0
关于汉诺塔问题

#include<stdio.h>
void move(char x,char y)
{printf("%c-->%c\n",x,y);
}
void hanoi(int n,char one,char two ,char three)
{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;
printf("input the number of diskes:");
scanf("%d",&m);
printf("The step to moving %3d diskes:\n",m);
hanoi( m,'A','B','C');
}

我怎么没搞不懂程序的运行过程
在脑袋里模拟不出来
为什么这样运行啊~~~
它是怎么一步一步求解的呢???

请教各位高手了

搜索更多相关的解决方案: 汉诺塔  

----------------解决方案--------------------------------------------------------
输个小一点的数比如3试一试看.
也就是执行函数hanoi(3,'A','B','C'),3==1不成立,执行hanoi(2,A,C,B),move(A,C)(即A-->C),hanoi(2,B,A,C).
...
----------------解决方案--------------------------------------------------------
确实从小规模问题想起..这种递归算法不要想的太复杂....
----------------解决方案--------------------------------------------------------

谢谢楼上
二位,我在仔细想想,一步一步来


----------------解决方案--------------------------------------------------------
看清华大学的C语言教材,上面有详细讲解啊。

----------------解决方案--------------------------------------------------------
先把递归函数搞懂....
----------------解决方案--------------------------------------------------------

所谓递归只要考虑好1,n-1,n之间的关系就好了
如果想不明白可以多考虑一个,即1,2,n-1,n


----------------解决方案--------------------------------------------------------
回复:(foxtt123)关于汉诺塔问题
http://blog.csdn.net/jabyshen007/archive/2007/03/18/1532808.aspx
比较详细
----------------解决方案--------------------------------------------------------
  相关解决方案