游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
Python代码如下:
def move(n,a,b,c):
if n==1:
print(a,'->',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
move(3,'A','B','C')
代码容易写,但是理解起来就比较难了。
具体过程见下图,用Axure画的计算流程图。
上边Axure画的图也是看了基础教程的书想明白了,也可能是查了很多资料的储备后,然后恰好到看到这本书悟透了,总之,这是很奇妙的过程。