汉罗塔问题
问题:假设有3个分别命名为A,B,C的塔座,在塔座A上插有n个直径大小各不相同、依小到大编号为1,2,……n个圆盘。现要求将A轴上的n个圆盘移至塔座C上并仍按同样顺序叠排,圆盘移动时必须遵守下列规则:(1)每次只能移动一个圆盘;(2)圆盘可以插在A,B和C中的任一塔座上;(3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。应该怎么移动? 汉罗塔问题解析:要把n个罗盘从A柱子移动到C,可以先把上面n-1个盘子从A通过C移动到B,再将第n个盘子从A移动到C,将n-1个盘子从B通过A移动到C,对于n-1个盘子可以通过函数递归来移动。 基本实现过程: n=eval(input()) def hanoi(n,A,C,B): if n==1: print("{} --> {}".format(A,C)) else: hanoi (n-1,A,B,C) #把n-1个盘从A移动到B print("{} --> {}".format(A,C))#把第n个盘子从A移动到C hanoi(n-1,B,C,A)#把n-1个盘子从B移动到C hanoi(n,'A','C',"B") 动画实现过程: import turtle class Stack: def __init__(self): self.items = [] def isEmpty(self): return len(self.items)