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

给不明白的同学解释一下,如果有理解错误请指出谢谢~

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')

首先了解函数的意思,n代表个数,3个参数的意思是a通过b移动到c

然后就有了如下的内容:

递归的思路就是重复,我们可以看看n=1的时候,应该就是直接把a移动到c就好,所以终止条件就有了。

那如何到这个终止条件的前一步呢,正如题目所说,a应该只有最后一个圆盘,其余的都在b,所以问题就编程了将a的n-1个盘移动到b上,所以我们第二行写move(n-1,a,c,b),注意print的时候还是a和c,这里的a和c代表的是第一个柱子和第三个柱子。

这时候我们就已经完成了第一步,将最后一个圆盘移动到了C上,然后现在的状态是第一个柱子没有,第二个柱子有n-1个,第三个柱子有1个,然后视第三个柱子为完成,我们现在要做的是将第二个柱子的前n-1个移动到a,最后一个移动到C,按照我们函数的写法就应该是(n-1,b,a,c),也就是b柱子通过a柱子移动到c上。

这样应该就比较好理解了吧~

正在回答

3 回答

      return

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

    print a,'-->',c

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

我不懂return到底返回了什么,是返回了下面这三行语句吗?

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

幕布斯1309840

return只返回了n==1的值,下面的跟他没关系
2016-09-27 回复 有任何疑惑可以回复我~
#2

Bjf

返回空啊
2017-09-02 回复 有任何疑惑可以回复我~

Mark一下

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

我想问问你:“def move(n, a, b, c):”这里的a,b,c,是不是分别对应,ABC,即a=A,b=B,c=C,那到后面这些abc的对应值变了没有?还有,是哪一行操作是让python对这个移动方案进行一一罗列的?

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

举报

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

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

进入课程
意见反馈 帮助中心 APP下载
官方微信