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

汉诺塔的移动问题

这个移动的函数不是很理解:

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)

求解答

正在回答

3 回答

流程谁都明白, 简单的形参换换位置的事儿,可是输出结果不对啊 按照游戏规则 不应该是

第一步输出 N-1 个 A-->B,

第二部输出 1个     A--> C,

第三部输出 N-1个  B-->C  这样print输出结果才对吧?????


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

刚刚把思路顺好了。

if n==1:

       print a,'-->',c

       return 

1)首先,当n为1时,只需要将A上面的唯一一个移动到C上面;

move(n-1,a,c,b)

2)其次,若n不为1,则将A上面除了最下面最大的盘子之外,也就是n-1个移动到B上面;

print a,'-->',c

3)经过上一步,A现在只有一个盘子了,则只需要将这一个移动到C上面;

move(n-1,b,a,c)

最后一步,就是将B上面的盘子移动到C上。

这是总体的思路从第二步开始就开始有内部的循环了,现在,B上面有n-1个盘子,此时的B就相当于上面讲的A,此时的应为:(n-1,b,a,c)。然后想办法把B上面的移动到c上面。以此类推,直到A,B均为空,C上的盘子按顺序派好,就是整个递归的过程。

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

同表示没看懂

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

举报

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

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

进入课程

汉诺塔的移动问题

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