| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 15487 人关注过本帖
标题:关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
只看楼主 加入收藏
gikieng
Rank: 2
等 级:论坛游民
帖 子:19
专家分:14
注 册:2013-3-7
收藏
得分:2 
貌似就是一个重复。。。

来的是新手,请多多包涵。。。
2013-03-30 20:14
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用whukeming在2013-3-30 17:53:11的发言:

还没了解过栈,所以还不知道怎么调试呢。
 
为什么n=1的时候又是 a b c 了,这步不懂

为什么要了解栈???
诧异中...

了解栈的确对分析有帮助,但是debug跟栈有毛关系?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-30 21:06
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用whukeming在2013-3-30 17:56:50的发言:

我用的是mac的Xcode,不了解,具体怎么操作

任何编译器都带调试的

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-30 21:07
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:2 
回复 楼主 whukeming
'                                                          (1)-1 Hanoi(1,’a’,’b’,’c’)=move(‘a’,’c’)---1
                            (1) Hanoi(2,’a’,’c’,’b’)=(1)-2 move(‘a’,’b’)------------------------------2
                                                           (1)-3 Hanoi(1,’c’,’a’,’b’) =move(‘c’,’b’)--3
Hanoi(3,’a’,’b’,’c’)= (2) move(‘a’,’c’)---------------------------------------------------------------4      
                                                           (3)-1 Hanoi(1,’b’,’c’,’a’)=move(‘b’,’a’)---5
                            (3) Hanoi(2,’b’,’a’,’c’)=(3)-2 move(‘b’,c’)--------------------------------6
                                                           (3)-3 Hanoi(1,’a’,’b’,’c’)=move(‘a’,’c’)---7

[ 本帖最后由 helloUJS 于 2013-4-2 19:38 编辑 ]
2013-03-30 21:40
不要脸的猫
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:41
专家分:126
注 册:2012-6-20
收藏
得分:2 
假设要将n个盘子从A移动到C:
第一步:把n-1个盘子设法借助C放到B,记做move(n-1,a,c,b)
第二步:把第n个盘子从A移到C
第三步:把B上的n-1个盘子借助A移到C,记做move(n-1,b,a,c)

埋骨何须桑梓地,人生无处不青山
2013-03-30 21:59
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:2 
以下是引用韶志在2013-3-30 17:09:12的发言:

如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘 子,就将B当作辅助柱。
如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,
每次处理两个盘子,也就是:A->B、A ->C、B->C这三个步骤,
而被遮住的部份,其实就是进入程式的递回处理。
观念是对的!好好考虑下

Maybe
2013-03-30 23:14
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
收藏
得分:0 
已经搞明白了。谢谢各位了
2013-04-02 17:51
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
收藏
得分:2 
看看。。
2013-04-05 17:32
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
不会就要学,不能一次为借口,汉诺塔就是借助C先放到B上然后在借助B放到C上,

Maybe
2013-04-06 09:00
byuxiong88
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2013-4-5
收藏
得分:2 
b和c换了以后再换一下就回到原来的位置了
2013-04-06 10:43
快速回复:关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058850 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved