汉诺塔的移动可以用递归函数非常简单地实现。
请编写move(n, a, b, c)
函数,它接收参数n
,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
# 期待输出: # A --> C # A --> B # C --> B # A --> C # B --> A # B --> C # A --> C move(3, 'A', 'B', 'C')
一个环:
Step1.将最大的环从A移动到C
A -> C
两个环:
Step1.把除了最大的环之外的环,从A移动到B
A -> B
Step2.将最大的环从A移动到C
A -> C
Step3.把除了最大的环之外的环,从B移动到C
B -> C
三个环:
Step1.把除了最大的环之外的环,从A移动到B
A -> C
A -> B
C -> B
Step2.将最大的环从A移动到C
A -> C
Step3.把除了最大的环之外的环,从B移动到C
B -> A
B -> C
A -> C
In [21]: def move(n,a,b,c):
...: if n==1:
...: print(a,"-->",c)
...: else:
...: move(n-1,a,c,b)
...: print(a,"-->",c)
...: move(n-1,b,a,c)
...: