汉诺塔问题

1478 篇文章

已下架不支持订阅

本文介绍了经典的汉诺塔问题,详细阐述了解题思路,并提供了编程要求。通过递归方式解决汉诺塔问题,当圆盘数量为1时直接移动,否则先将n-1个圆盘移动到辅助柱,再移动第n个,最后将n-1个从辅助柱移动到目标柱。读者需掌握递归思想,以完成相应编程任务。

第1关:汉诺塔问题

任务描述
本关任务:约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。
这是一个著名的问题,几乎所有的教材上都有这个问题。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:18,446,744,073,709,551,615
这是一个天文数字,若每一微秒可能计算(并不输出)一次移动,那么也需要几乎一百万年。我们仅能找出问题的解决方法并解决较小N值时的汉诺塔,但很难用计算机解决64层的汉诺塔。
假定圆盘从小到大编号为1, 2, …

相关知识
为了完成本关任务,你需要掌握:1.解题思路。

解题思路
当n=1时:显然只要移动一次。A–>C
f(1) = 1,这便是该递归问题的出口。
当n>1时:当把n-1块从 A 上拿走后,此时第 n 块便可以从 A 移动到 C ,因为第 n 块最大,所以这时 C 上只能有这最大的第 n 块,其余的 n-1 块都在B上。接下来我们要将 B 上的 n-1 块移动到 C 上,整个任务就完成了。
第一次是将 n-1 块从 A 移动到 B,第二次是将 n-1 块从 B 移动到C,根据对称性可知,这两次移动的次数是相等的,且与将 n-1 块从 A 移动到 C 的次数也是相等的。
由此可列得递推式

编程要求
根据提示,在右侧编辑器补充代码,完成题目。

测试说明
平台会对你编写的代码进行测试:

已下架不支持订阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ssaty.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值