给不明白的同学解释一下,如果有理解错误请指出谢谢~
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')
首先了解函数的意思,n代表个数,3个参数的意思是a通过b移动到c
然后就有了如下的内容:
递归的思路就是重复,我们可以看看n=1的时候,应该就是直接把a移动到c就好,所以终止条件就有了。
那如何到这个终止条件的前一步呢,正如题目所说,a应该只有最后一个圆盘,其余的都在b,所以问题就编程了将a的n-1个盘移动到b上,所以我们第二行写move(n-1,a,c,b),注意print的时候还是a和c,这里的a和c代表的是第一个柱子和第三个柱子。
这时候我们就已经完成了第一步,将最后一个圆盘移动到了C上,然后现在的状态是第一个柱子没有,第二个柱子有n-1个,第三个柱子有1个,然后视第三个柱子为完成,我们现在要做的是将第二个柱子的前n-1个移动到a,最后一个移动到C,按照我们函数的写法就应该是(n-1,b,a,c),也就是b柱子通过a柱子移动到c上。
这样应该就比较好理解了吧~