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

真的不懂啊,看了评论一堆问题,我还是不知道这答案什么意思?有没有大佬能详细解说一下?

哈哈哈哈哈哈哈哈哈 move这是个函数吗? 怎么 一会儿n=4 ,一会儿n=3

正在回答

4 回答

是按题目给出来的逻辑走的:

def move(n, a, b, c):
    if n == 1: 
           #如果a只有一个圆盘,可以直接移动到c;
           print a, '-->', c
           return
           
    #如果a有N个圆盘,执行三步走策略:    
    #   首先需要把 (N-1) 个圆盘移动到 b,    
    move(n-1, a, c, b)    
    #   然后,将 a的最后一个圆盘移动到c,    
    print a, '-->', c    
    #   再将b的(N-1)个圆盘移动到c。    
    move(n-1, b, a, c)    

move(4, 'A', 'B', 'C')
13 回复 有任何疑惑可以回复我~

n=1的时候就不用解释了吧。主要是以下三步:

move(n-1,a,c,b)
print a, '-->', c
move(n-1,b,a,c)

1、当n>1时,需要把“a”柱除最底端圆盘的所有(n-1个)移动到“b”柱,move(n-1,a,c,b)

2、然后把“a”柱剩下的最底端圆盘(即最大圆盘)移动到“c”柱,print a, '-->', c

3、最后把第一步移动到“b”柱的所有圆盘移动到“c”柱,move(n-1,b,a,c)

逻辑就是把n-1个圆盘先移动到过渡位置,最大的移动到目标位置后,再把过渡位置的n-1个圆盘移动到目标位置。剩下的任务就是程序自动递归循环。

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

move为什么最后是

move(4'A''B''C')


4


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

我知道move(a,c,b)是把b,c交换,如果n不为1就继续交换,直到n为1,打印第一次是从A>C还是A>B

然后move(b,a,c)也是同理,为什么要交换就是因为大盘子不能放在小盘子上面

至于为什么要这样交换我是根据题目给的提示蒙的

n为3结果:

A-->C    A-->B    C-->B    A-->C    B-->A    B-->C    A-->C


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

波罗僧

之前就是没有看懂move()里面的顺序是怎么回事,好像有点懂了,感谢!
2019-02-28 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

真的不懂啊,看了评论一堆问题,我还是不知道这答案什么意思?有没有大佬能详细解说一下?

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