汉诺塔的移动可以用递归函数非常简单地实现。
请编写move(n, a, b, c)
函数,它接收参数n
,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
if n == 1:
print(a, '-->', c)
# 期待输出: # A --> C # A --> B # C --> B # A --> C # B --> A # B --> C # A --> C move(3, 'A', 'B', 'C')
示例代码 :
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)
n=int(input("输入a的层数:"))
move(n,'A','B','C')
在把最大的盘子从a移到c时,此时有n-1个盘子在b上(a借助b移到c),随后a仅有的一个盘子给c。
之后再把b上的n-1个盘子借助a移到c上即可。
move(n, a, b, c)可抽象成a:盘子的出发点,b:盘子要移到终点需要借助的位置,c:盘子的终点。