问题描述
请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
算法思路
递归思想,把汉诺塔问题分为三个步骤(将n-1看作为一个整体):
(1)将n-1个盘子从A柱子放在B柱子上:move(n-1, a, c, b)
(2)把最大的盘子从A柱子放在C柱子上: move(1, a, b,c)
(3)把n-1个盘子再从B柱子上放到C柱子上:move(n-1,b,a,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)