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

没有b-->c 但是输出了这个

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)    ###print b, '-->',c     move(4, 'A', 'B', 'C') #为啥不用添加一个b-->c 呢   而且   结果里面居然有b-->c   求解惑

正在回答

2 回答

http://img1.sycdn.imooc.com//59191d020001585f05230479.jpg


看到底部还有一个move(n-1, b, a, c)这个递归函数。


1,n=4 , A , B, C

2,n=3 , A , C, B

3,n=2 , A , B, C

4,n=1 , A , C, B


执行 第四行的 print a, '-->', c, n

打印 print A --> B  1

return 返回 所以这是当n=1这个函数跳出去,跳入到n=2这个函数里面


n = 2 A, B, C


执行 第0行的 print a, '-->', c, n

打印 print A --> C 2


执行第二行的move(n-1, b , a, c)


因为当前的函数是 n = 2 A, B, C


所以依次执行 ,

n = 2 


move(2-1, B, A, C)


执行 n==1


执行打印 第4行的 print a, '-->', c, n


打印 B --> C 1


..........



所以以此类推


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

LCpeople

为什么第四行打印的是A→B
2017-07-19 回复 有任何疑惑可以回复我~

研究了半小时,终于能理解了,谢谢大神

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

举报

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

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

进入课程

没有b-->c 但是输出了这个

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