查看了汉诺塔的游戏规则,首先每次只能移动一个盘子;此外每次移动必须保证小的盘子在大的盘子之上。
在这里写一下自己的理解,我觉得用3个盘子来演示一遍这个游戏,就能明白了。
那么现在三根柱子a,b,c;三个盘子1,2,3(1号最小)
第一步:a --> c(1号盘子移到c柱上)
第二步:a --> b(2号盘子移到b柱上)
第三步:c --> b(1号盘子从c移到b柱上,因为小盘一定要在大盘之上,所以我们一到三步的目的是要把a柱上最大的3号盘移到c柱上,所以要把c柱空出来,且3号盘上没有其他盘)
第四步:a --> c(把3号盘移到c柱上)
第五步:b --> a(此时b柱上还有1号和2号盘,先把1号盘移到a柱上)
第六步:b --> c(此时b柱上只有一个2号盘,直接移到c柱上)
第七步:a --> c(最后一步,把a柱上的1号盘移到c柱上) 完成后,此时c柱上就是1号、2号、3号盘依次从小到大排在c柱上。
n=3,理解后,可以再试一试4个盘子的移动,很有意思。
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(3, 'A', 'B', 'C')
move(4,'a','b','c')