鱼C论坛

 找回密码
 立即注册
查看: 4856|回复: 7

汉诺塔问题

[复制链接]
北北 该用户已被删除
发表于 2012-8-24 23:00:32 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
北北 该用户已被删除
 楼主| 发表于 2012-8-27 14:34:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 15:07:36 | 显示全部楼层
对于这个   思想很关键  我之前也想了很久  你可以去看看Knuth的具体数学  第一章就有这个  递归思想很重要
小甲鱼最新课程 -> https://ilovefishc.com
北北 该用户已被删除
 楼主| 发表于 2012-8-27 20:51:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 21:56:22 | 显示全部楼层
简单地说,汉诺塔问题的解决就是一步步把上层的盘移开,把最大的盘移到目标座上,然后无视它,把刚才移开的当作整个塔,再把最大的盘移到目标座上,不断重复,直到最大的盘就是最开始最小的盘为止
递归程序分为三步
第一步:把n-1(除去最大的)个盘移到借助的座上
第二步:把最大的盘移到目标座上
第三步:把移开的盘移到目标座上
可以看出第一步和第三步的操作是一样的,只不过起始、借助、目标的位置不一样,所以是像程序里写的那样
而第一步和第三步的完成都是同样要完成三步操作,随着传入的n的减小,问题的规模不断减小,直到n=1,移向目标,问题就解决了
不明白的话可以看一下 http://www.verycd.com/topics/2899623/ 第57集
还不明白的话就到4399上找个汉诺塔的游戏玩一下吧,我就是通过实际操作才恍然大悟的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-28 00:54:13 | 显示全部楼层
本帖最后由 天长地久 于 2012-8-28 00:57 编辑

我也觉得这个蛮难懂的,但是可以先从简单的学起。这里有个题目你做做看。
有个猴子摘了很多桃子,吃了一半后觉得没吃够又吃了一个,过了一天把剩下的桃子吃了一半也没吃够就又吃了一个,最后只剩一个桃子了。
这个你可以用递归算法算出一共有多少桃子吗??
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-29 11:43:08 | 显示全部楼层
本帖最后由 梦幻羽羽 于 2020-3-15 22:18 编辑

呵呵。  楼主, 你好 ,  我能帮你解答 ,  或许你看我写的更好理解   
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-4 19:26:01 | 显示全部楼层
非常想学习
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表