C语言 汉诺塔程序当n=3时,执行步骤怎么做?

 我来答
三野深月11
2016-05-17 · TA获得超过360个赞
知道小有建树答主
回答量:338
采纳率:100%
帮助的人:61.1万
展开全部
理解汉诺塔问题,可以先抛开递归这件事,就问题本身来讨论,先不要看程序。
三个柱子上,小的圆盘一定在大的上面。把A柱上的盘子n号盘子移到B柱上,分成两步,1)把n之前的移走,2)把n号盘移到B柱上,3)把n之前的盘子移回来。

先把这个问题本身搞清楚,再来讨论程序实现。
把n之前的盘子移走这个事,不是简单的一次就可以移走的,这是一个过程。
这个过程要借助C柱,
移动n-1个盘子的过程,与移动n个盘子的过程相比,除了数量少一个,目标是A到C,没有本质的不同,这也是使用递归的基础。
把解决问题的过程弄明白了,再来看程序就比较容易了。

n=3,移动3个盘子
实际上我们如果手工去做,要这样,
1# A-B
2# A-C
1# B-C
3# A-B,这时3#已经就位。
1# C-A
2# C-B
1# A-B
这是移动3个盘子,从A-B。
要移动第4个盘子,这时就可以做了 4# A-C,然后重复前面的过程,把3个盘子移动到过来。
不过刚才移动的3个盘子是A-B,现在则是B-C,但基本的过程是一样的。

具体 的程序看百科看吧。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式