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

不是很懂 求大神详细解答

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

代码 是这样 前几句 还是懂的  就是 这三句

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

    print a, '-->', c

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

 实在 看不懂  有人解释  说 第一个是 把n-1个盘子 放在b上  可是我不懂为啥写成move(n-1,a,c,b)啊 为啥写成这样啊

正在回答

1 回答

这个是递归的写法,执行到这一行时,python解释器会去查找move方法,然后找到后,将值代入,又继续运行到这里,然后就是move(n-2,a,c,b)了(其实仍然是n-1,只是相当于第一次来说,是n-2),这样一直执行,直到n=1.然后就将a移到了c上,然后其他的n-1个移到了b上,这时,move(n-1, a, c, b)执行完了,然后又一直返回,返回,返回。。。因为递归里调用了很多move方法嘛,然后继续执行下面的代码,需要的就是将b上的n-1个通过a移动c上,是不是又是相同的递归么,只是参数变了,对吧。。大概就是这么个意思,可能有点难以理解哈,多理解下,最好是拿个笔一步步的把函数执行的过程在纸上画出来,然后就应该可以理解了

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

慕姐4424294 提问者

非常感谢! 真的很感谢你
2015-10-24 回复 有任何疑惑可以回复我~
#2

慢慢懂你的故事

<感谢>
2016-10-29 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

不是很懂 求大神详细解答

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