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

为什么最后一个move不需要print

为什么最后一个move不需要print??

正在回答

4 回答

会提出这个问题应该是没理解清楚原理,先来分析这个场景,三个柱子,每一步的目标都是借助第三根柱子,来达到把最底下那块在两根柱子间转移的效果。一开始我们需要从a->c,所以需要把剩下的3片移到b柱上(步骤1),这时,对于a柱上的剩下3片来说,就是需要借助c柱移动到b柱上(步骤2),那么,对于再上面的两片来说,又是借助b柱移动到c柱上(步骤3),所以一开始是ab,ac,bc(步骤3),然后ab,此时第三片到b柱上了,又要把c柱上的两片移到b柱上,所以是ca,cb,ab(步骤2),之后也都是这个套路。

所以这个递归的原理就是,移4片到c,需要借助移3片到b,而移3片到b,就要借助移2片到c,以此类推

首先,算法里的abc都是不一定的,要看每一步的目标是什么

所以算法的第一步是move(n-1,a,c,b)  意思是把a上的n-1片移到相对的b上,这样a才能移到c上

第二部是把最后一片移到c上,所以是 a -> c  

最后一步就是把b柱上的移到c上,所以是move(n-1,b,a,c)

所以为什么最后一个move不用print,因为每一步的目的只是把底片移到目的柱上,相对而言就是中间的 a->c,而这个操作在每次递归中都会执行一次,构成了完整的过程

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

https://img1.sycdn.imooc.com//5cd0183f0001411f09940491.jpg这个图我一步步的解析,理解传参,用参就理解了

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

第一个 move(n-1,a,c,b) 表示的是把上面的n-1块圆盘从 a移动到b

然后 再把 a 移动到 c  即 print a--->c

第二个move(n-1,b,a,c) 表示把放在b上的n-1个圆盘移动到c上,实现了整个程序

而这个 move(4, 'A', 'B', 'C') 表示的是调用这个函数,把参数给传递进去。

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

一共就一个,哪来的最后一个

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

qq_慕沐221811 提问者

调用的move
2019-04-12 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么最后一个move不需要print

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