汉诺塔问题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,c,a)
print(move(3,'A','B','C'))

# 期待输出:
# A --> C
# A --> B
# C --> B
# A --> C
# B --> A
# B --> C
# A --> C
move(3, 'A', 'B', 'C')

在递归的思想里,把问题简单化。 n 个盘子,从 a 经过 b 移动到 c 那分三步,

  1. 把最上面 (n-1) 个盘子从a, 经过c 移动到b
  2. 把1个盘子,从a 直接移动到 c
  3. 把b 上的 n-1 个盘子从 b 经过 a 移动到c 至于怎么把 n-1个盘子移过去,那是另一层move干的事,我不管。

你可能感兴趣的:(算法)