基于递归算法的汉诺塔问题求解

汉诺塔问题是经典的递归算法应用案例,其目标是将所有圆盘从A柱移动到C柱,过程中需借助B柱,并始终保持大盘在下,小盘在上的规则。

def hanoi(n, source, auxiliary, target):
  """
  递归求解汉诺塔问题。

  Args:
    n: 圆盘数量.
    source: 源柱子名称.
    auxiliary: 辅助柱子名称.
    target: 目标柱子名称.
  """
  if n == 1:
    print(f"将圆盘 1 从 {source} 移动到 {target}")
  else:
    hanoi(n - 1, source, target, auxiliary)  # 将n-1个圆盘从源柱子移动到辅助柱子
    print(f"将圆盘 {n} 从 {source} 移动到 {target}")  # 将最大的圆盘从源柱子移动到目标柱子
    hanoi(n - 1, auxiliary, source, target)  # 将n-1个圆盘从辅助柱子移动到目标柱子

# 设置圆盘数量
num_disks = 3

# 调用hanoi函数解决汉诺塔问题
hanoi(num_disks, 'A', 'B', 'C')

该代码实现了汉诺塔问题的递归解决方案。函数 hanoi 接收圆盘数量、源柱子、辅助柱子和目标柱子作为参数,通过递归调用自身实现圆盘的移动,并打印每一步的操作过程。

py 文件大小:443B