C程序有个难题? 汉诺塔(hanoi)?

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:41:35
我有源程序,但是看不懂,关键是函数递归在其函数内的执行过程?

有懂的,请指教,详细点,关键点.

很简单!!!
比如你想把10个盘从A处借助B处移到C处;
那你可以先叫别人帮你把最上面的9个盘从从A处借助C处移到B处;
然后你自己把最下面那个盘从A处移到C处;
又叫别人把B处的9个盘移回C处,搞定!!

别人移那9个盘又可以叫另外的别人移上面8个盘
......
......
最后一个盘就很简单了

堆栈,

用逆向思维来考虑,
做最后一步之前我需要做什么。
把其他的当成一个整体来考虑,就是所把(n-1)块当成一块来移动!

就是递归啊,要把N层从A柱移动到C柱可以这么想:先把上面的N-1层移动到B柱,然后把底层移动到C柱,最后把B上的N-1层移动到C柱就完成了,这里的ABC是动态变化的,根据递归的继续不断改变,但是都对应与一个固定的原柱子编号

用C语言就可以搞定了吧