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

如何解答思路

答案的思路是怎样的?最高票的代码没说明递归中的C --> A 问题,有人知道完整思路么

正在回答

2 回答

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

这里 'A','B','C'三个柱子的地位是对称的

1.当柱子a上只有一个圆盘时,只要讲它从a移动到c就可以了;

2.当柱子a上面有n(n > 1)个圆盘时,假设我们已经拥有了能够完成功能的move函数,我们可以把这个问题分为以下三个步骤:

1)先将柱子b和c互换,然后调用函数move(n - 1,a,c,b),这样就可以把a上的 n - 1个盘子,放到b上,此时a上还剩1个盘子,b上有n - 1个盘子,c上没有盘子;

2)然后调用函数move(1,a,b,c)将a上的盘子放到c上,此时a上没有盘子,b上有n - 1个盘子,c上有1个盘子;

3)最后,将柱子b和a互换,调用函数move(n - 1,b,a,c)将b上的 n - 1个盘子放到c上,就完成了任务。


0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

如何解答思路

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