鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 灰色小妖

关于汉诺塔

[复制链接]
发表于 2015-8-31 21:33:41 | 显示全部楼层
移动顺序是先把x-->y借助z(递归调用)
然后把最后一个x-->z(非递归,一条语句)
最后把y-->z(递归调用)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-8 22:02:42 | 显示全部楼层
感谢楼主谢谢你 学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-6 11:19:48 | 显示全部楼层
汉诺塔!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-26 18:32:57 | 显示全部楼层
你在纸上画一下它的流程,就知道它的步骤了,一般情况汉诺塔都用双递归
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-6 10:57:11 | 显示全部楼层
厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-7 16:53:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-13 23:59:59 | 显示全部楼层
我来给你用print分析下整个递归过程,我自己也才开始学,所以想出了整个办法,应该没问题了,过程非常详细了,整个帖子是2014年的也不指望还有讲奖赏了,为后来的同志们方便理解吧,包程序拷贝执行了对着看,过程就很清楚了
def hanoi(n,a,b,c):
    print('------')
    print(n,a,b,c)
    print('------')
    if n == 1:
        print('aaaaaaaa')
        print(n,a,b,c)
        print(a,'--->',c)
        print('aaaaaaa')
    else:
        print('bbbbbbbbb')
        hanoi(n-1,a,c,b)
        print(n-1,a,c,b)
        print(a,'---->',c)
        print('bbbbbbb')
        hanoi(n-1,b,a,c)
        print(n-1,b,a,c)
        print('ccccccccc')
n = int (input('请输入汉罗塔的层数:'))
hanoi(n,'x','y','z')

请输入汉罗塔的层数:3
------
3 x y z
------
bbbbbbbbb
------
2 x z y
------
bbbbbbbbb
------
1 x y z
------
aaaaaaaa
1 x y z
x ---> z
aaaaaaa
1 x y z
x ----> y
bbbbbbb
------
1 z x y
------
aaaaaaaa
1 z x y
z ---> y
aaaaaaa
1 z x y
ccccccccc
2 x z y
x ----> z
bbbbbbb
------
2 y x z
------
bbbbbbbbb
------
1 y z x
------
aaaaaaaa
1 y z x
y ---> x
aaaaaaa
1 y z x
y ----> z
bbbbbbb
------
1 x y z
------
aaaaaaaa
1 x y z
x ---> z
aaaaaaa
1 x y z
ccccccccc
2 y x z
ccccccccc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 19:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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