鱼C论坛

 找回密码
 立即注册
查看: 2810|回复: 6

[已解决]关于24课视频中汉诺塔的编程问题

[复制链接]
发表于 2015-11-10 11:02:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想问下在我红框框中的那步程序是怎么得出的?


第一步和第二步还能看的出来分别是递归后
                                        第一步:hanoi(1)=x -->z
                                        第二步:是因为形参y和z对调 x-->y
                                        但第三步是什么原因得出 z-->y
               
        不知道我分析对不对,有知道的大大请告诉下~~弄清楚这个就基本搞明白递归了~~
最佳答案
2015-11-11 23:06:35
lzj222312 发表于 2015-11-10 17:50
我想问下这个函数else:
                            1.hanoi(n-1,x,z,y)
                              ...

执行顺序,按照你这样的编号是:112212
不知道这样写你能不能明白我的意思~
1
    1
    2
2
    1
    2
123.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-10 14:35:19 | 显示全部楼层

回帖奖励 +50 鱼币

怎么说呢
就是在运行的时候 某一步是(z,x,y)
print(x ,'-->',z) 得到 z-->y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-10 17:50:58 | 显示全部楼层
我想问下这个函数else:
                            1.hanoi(n-1,x,z,y)
                               print()
                           2. hanoi(n-1,y,x,z)

这是要执行2次函数体
比如N是3
我想问下是111222这样执行 还是121212 这样的执行顺序?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-11 23:06:35 | 显示全部楼层    本楼为最佳答案   
lzj222312 发表于 2015-11-10 17:50
我想问下这个函数else:
                            1.hanoi(n-1,x,z,y)
                              ...

执行顺序,按照你这样的编号是:112212
不知道这样写你能不能明白我的意思~
1
    1
    2
2
    1
    2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-16 08:58:17 | 显示全部楼层
hldh214 发表于 2015-11-11 23:06
执行顺序,按照你这样的编号是:112212
不知道这样写你能不能明白我的意思~
1

是说循环体是第一次 12,第二次 12 这样去循环是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-16 16:59:21 | 显示全部楼层
lzj222312 发表于 2015-11-16 08:58
是说循环体是第一次 12,第二次 12 这样去循环是吗?

评分

参与人数 1鱼币 +5 收起 理由
lzj222312 + 5 谢谢啦

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-27 17:43:57 | 显示全部楼层
我艹,看了这个帖子,我居然搞懂了,3层汉诺塔的步进执行顺序是这样的:

hanoi(3,a,b,c)
else:
        hanoi(3-1,a,c,b) #(n-1,x,z,y)
        hanoi(2-1,a,b,c) #n=1, a2c
        print                             a2b
        hanoi(2-1,c,a,b) #n=1, c2b
        print                             a2c
        hanoi(3-1,b,a,c) #(n-1,y,x,z)
        hanoi(2-1,b,c,a) #n=1, b2a
        print                             b2c
        hanoi(2-1,a,b,c) #n=1, a2c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 09:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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