gzj137070928 发表于 2020-9-29 09:38:39

汉诺塔Hanoi

# 汉诺塔问题:将在x柱上从小到大的n个圆盘按照从小到大的顺序移到z柱
# 递归思想:先将n-1个圆盘借助z,移到y上;再将最底下的一个个圆盘移到z上
# 最后将y上的n-1个圆盘移到z上
def hanoi(n, x, y, z):
    global count
    if n == 1:
      print(x, '-->', z)
      count += 1
    else:
      hanoi(n - 1, x, z, y)# 将n-1个圆盘借助z,移到y上
      print(x, '-->', z)# 将最底下的一个个圆盘移到z上
      count += 1
      hanoi(n - 1, y, x, z)# 将y上的n-1个圆盘移到z上


count = 0
n = int(input('请输入汉诺塔的层数:'))
hanoi(n, 'x', 'y', 'z')
print('移动的总次数为:', count)
页: [1]
查看完整版本: 汉诺塔Hanoi