为了账号安全,请及时绑定邮箱和手机立即绑定

求大神赐教,过程和符号不懂

def move(n, a, b, c):
    if n ==1:
        print a, '-->', c
        return
    move(n-1, a, c, b)
    print a, '-->', c
    move(n-1, b, a, c)
move(4, 'A', 'B', 'C')


正在回答

1 回答

    关于汉诺塔的问题,游戏规则是有abc三根柱子,在a柱子上套着n个盘子,盘子自上而下越来越大,我们的任务是把盘子全部转移到c盘子上去,但是每次只能移动一个盘子,只有把盘子套在某个柱子上以后才能动其他盘子,而且套盘子时不能让大盘子盖在小盘子上。

    那么我们可以把这个问题简化成这样,既然要转移n个盘子,

我们可以先把n-1个盘子从a放到b上,move(n-1,a,c,b),

然后把一个盘子从a拿到c ,a -->c,

然后再把那n-1个盘子从b拿到c move(n-1,b,a,c)


这样推理下去的尽头是什么呢,就是仅有一个盘子的时候,

只要,然后把一个盘子从a拿到c ,a -->c,

3 回复 有任何疑惑可以回复我~
#1

慕粉2346168995 提问者

哪里bac.abc有什么不同吗?
2017-04-08 回复 有任何疑惑可以回复我~
#2

Bluestar628 回复 慕粉2346168995 提问者

move函数的后面三个参数可以这样理解,如果是move(n,a,b,c)就是通过b柱子中转把n个盘子从a移动到c上。那么move(n,b,a,c)的意思就是把n个盘子通过a的中转从b转移到c上
2017-04-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

求大神赐教,过程和符号不懂

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信