首先要认识到汉诺塔的目标:将A柱上的N个盘子移动到C柱子上。

我们可以运用递归的思想,就是把这个总目标分解成三个子目标:

子目标1: 将前n-1个盘子从A柱移动到B柱上

子目标2: 将最底下的最后一个盘子从A柱移动到C柱上

子目标3: 将B柱上的n-1个盘子移动到C柱上

然后每一个子目标又可以看作一次独立的汉诺塔游戏,可以继续分解直到N为1。

以下为代码实现:

1
2
3
4
5
6
7
8
9
10
def move(n, a, b, c):
if n == 1:
print(a, '-->', c)
else:
move(n-1, a, c, b) #子目标1
move(1, a, b, c) #子目标2
move(n-1, b, a, c) #子目标3

n = input('Enter the number:')
move(int(n), 'A', 'B', 'C')