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

看不懂两条语句

为什么前面要写成move(n-1,a,c,b)而后面写成move(n-1,b,a,c)不能写成move(n-1,a,b,c)呢

正在回答

2 回答


这个网站拿去用,不用谢

http://www.pythontutor.com/visualize.html#mode=display

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

https://www.cnblogs.com/tgycoder/p/6063722.html

一个不成熟的理解,仅供参考

刚开始的圆盘和柱子的状态是这样

https://img1.sycdn.imooc.com//5d213cb700019cc403530102.jpg

不管有多少个圆盘, 完成这个移动,总的来说需要三步。

第一部分 就是要把 最大的那个圆盘孤立出来,剩下圆盘排好放在另一个柱子上。

move(n-1, a, b, c) #是什么意思呢 那就是 除了最后一个,只把上面的n-1个圆盘, 从A开始移动, 用B作为中转站, 最终转移到C上

最终变成这个样子

https://img1.sycdn.imooc.com//5d213ce00001cd1403330093.jpg


第二部分,把孤立出来的最大的圆盘放到C柱子上, 所以代码是这样

print(a  + "-->" + c) 

现在是这个状态

https://img1.sycdn.imooc.com//5d213d410001759403530098.jpg

最后一部分,类似的思路,现在需要把B柱子上最大的圆盘孤立出来,放到C上,所以是 B作为起点,A作为中转站,转移到C上。代码所以是:

move(n-1, b, a, c) # 至于为什么还是n-1呢 因为要把B柱子上圆盘全都转移到C上。所以数量还是n-1 (第一步的n-1 是因为 最大的那个圆盘 我们没有移动)


不知道这样把函数形参 赋予实际意义,会不会帮助你理解


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

慕的地1481129

嗯,理解了,挺靠逻辑的
2019-12-25 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

看不懂两条语句

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