看不懂两条语句
为什么前面要写成move(n-1,a,c,b)而后面写成move(n-1,b,a,c)不能写成move(n-1,a,b,c)呢
为什么前面要写成move(n-1,a,c,b)而后面写成move(n-1,b,a,c)不能写成move(n-1,a,b,c)呢
2019-07-05
https://www.cnblogs.com/tgycoder/p/6063722.html
一个不成熟的理解,仅供参考
刚开始的圆盘和柱子的状态是这样
不管有多少个圆盘, 完成这个移动,总的来说需要三步。
第一部分 就是要把 最大的那个圆盘孤立出来,剩下圆盘排好放在另一个柱子上。
move(n-1, a, b, c) #是什么意思呢 那就是 除了最后一个,只把上面的n-1个圆盘, 从A开始移动, 用B作为中转站, 最终转移到C上
最终变成这个样子
第二部分,把孤立出来的最大的圆盘放到C柱子上, 所以代码是这样
print(a + "-->" + c)
现在是这个状态
最后一部分,类似的思路,现在需要把B柱子上最大的圆盘孤立出来,放到C上,所以是 B作为起点,A作为中转站,转移到C上。代码所以是:
move(n-1, b, a, c) # 至于为什么还是n-1呢 因为要把B柱子上圆盘全都转移到C上。所以数量还是n-1 (第一步的n-1 是因为 最大的那个圆盘 我们没有移动)
不知道这样把函数形参 赋予实际意义,会不会帮助你理解
举报