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

请问n不为1时,这里的print为什么还是a->c而不是a->b呢?

请问各位大神,这里为什么还是a->c?前面已经变成move(n-1,a,c,b)了,这里为什么不是a->b呢?为什么move(n-1,b,a,c)之后不用再print了呢?谢谢大家。

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


正在回答

2 回答

递归调用,原函数定义的是 move(n,a,b,c),调用move(n-1,a,c,b)之后,相当于n=n-1,a='a',b='c',c='b',

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

Raven_Lee 提问者

非常感谢!
2017-04-01 回复 有任何疑惑可以回复我~

当n≠1时,其实分成两个过程:1.先把n-1块原盘从a移到b,也就是move(n-1,a,c,b),把最后一块原盘从a移到c,也就是print a,'-->',c;2.再把n-1块原盘从b移到c,也就是move(n-1,b,a,c),这里总共只有n-1块,都移完了所以不用print了

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

举报

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

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

进入课程

请问n不为1时,这里的print为什么还是a->c而不是a->b呢?

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