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

不是很懂其中的过程

执行的结果为什么是下面这样?

 A --> B 

A --> C 

B --> C 

A --> B 

C --> A 

C --> B 

A --> B 

A --> C 

B --> C 

B --> A 

C --> A 

B --> C 

A --> B 

A --> C 

B --> C

正在回答

3 回答

那好,我就讲输出的顺序了,这个递归函数你要明白,只有if条件满足时,才会输出,而满足条件的唯一条件时n=1,让n=1的函数只能是move(1,a,c,b)和move(1,b,a,c),这两个怎么来的,从第一个move(4,a,b,c)推导就知道了,当满足了第一个move(1,a,c,b),你就可以按照定义的函数执行语句顺序来了,接着print a,'-->',c,注意这里a和c只是把a和c位置上的数输出,不是a与c。再接着move(1,b,a,c),然后这个时候你要意识到,你只是完成了move(2,a,b,c)的输出,接着在move(3,```,```,```)这个函数体内,你有接着像move(1)一样输出move(2)了。后面其他也是这样。

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

慕后端9246718

谢谢,图片+文字后很受用
2018-08-15 回复 有任何疑惑可以回复我~

算了,图片略大,上传不了,有心想学会递归的人可以移步网盘,不难。

链接为https://pan.baidu.com/s/1tSxvKxeC9qxZdb7vWlKI7Q,无密码。

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

酱酱kay

图片的帮助很大,我还有一个问题,就是输出的顺序不太理解,能再解释一下吗?
2018-07-17 回复 有任何疑惑可以回复我~
#2

sunny超1 回复 酱酱kay

在我的新回答中有回复,你可以看看。
2018-07-17 回复 有任何疑惑可以回复我~

/*下个回答附上图片*/

def move(n,a,b,c):  //这里是函数的定义部分,有四个形参,分别对应圆盘个数,a位置的圆盘名字,b位置的圆盘名字,c位置的圆盘名字它可以不是A,也可是A,后面两个同理

if n==1:  //判断n的值是否符合,符合才执行

    print a,'-->',c//将a位置的圆盘名字和c位置的圆盘名字输出

    return //返回值为空,不加返回内存会溢出,程序不停止而超时

move (n-1,a,c,b)//这里函数调用自身,你可能会疑惑它要怎样输出,但你现在先要进入这个函数的运算,才能执行下一步,然后它就会反复判断,一直到n=1,这时候你的move(2,a,b,c)递归是这样子滴,

/*    def move(2,a,b,c):

            if n==1:

                    print a,'-->',c

                    return

             move(1,a,c,b)

             print a,'-->',c

             move(1,b,a,c)

*/

而你要清楚n=1,函数值return none,释放内存,程序终止不再执行后面语句,所以move(1,a,c,b)函数输出为

A-->B,接着在move(2,a,b,c)函数体中,接着print a,'-->',c执行语句,输出为A--C,再接着move(1,b,a,c),有输出为B-->C,此时move(2,a,b,c)语句结束。

为什么我会说是语句呢?别忘了,这个move(2,a,b,c)只是在move(3,a,c,b)“函数体”中的一个语句而已,既然move(2,a,b,c)语句结束,那后面接着print a,'-->',c执行语句,注意此时的函数体为move(3,a,c,b),所以输出为A-->B,后面接着move(2,c,a,b)语句,输出的方法和前面move(2,a,b,c)相同,但结果不同。

所以,如果要理解递归,你要抽丝剥茧,找到循环终止的位置,从终止的位置出发,一直到你开始的地方,结合后面图片,理解应该更好点。

讲的不好,请见谅。


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

凌噬G灵释

很用心!帮了大忙了,感谢。
2018-08-13 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

不是很懂其中的过程

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