【分治算法】Hanoi塔问题Python实现

因上努力

个人主页:丷从心·

系列专栏:Python基础

学习指南:Python学习指南

果上随缘


问题描述

  • a a a b b b c c c是三个塔座,开始时,在塔座 a a a上有一叠共 n n n个圆盘,这些圆盘自下而上,由大到小地叠放在一起,各圆盘从小到大编号为 1 1 1 2 2 2 ⋯ \cdots n n n,要求将塔座 a a a上的这一叠圆盘移到塔座 b b b上,并仍按照同样顺序叠置
  • 在移动圆盘时应遵守以下移动规则
    • 每次只能移动一个圆盘
    • 任何时刻都不允许将较大的圆盘压在较小的圆盘之上

Python实现

def hanoi(n, source, target, auxiliary):
    if n > 0:
        # 将 n - 1 个盘子从源柱移动到辅助柱
        hanoi(n - 1, source, auxiliary, target)
        # 将第 n 个盘子从源柱移动到目标柱
        print(f'将盘子 {n}{source} 移动到 {target}')
        # 将 n - 1 个盘子从辅助柱移动到目标柱
        hanoi(n - 1, auxiliary, target, source)


n = 3

hanoi(n, 'A', 'B', 'C')
将盘子 1 从 A 移动到 B
将盘子 2 从 A 移动到 C
将盘子 1 从 B 移动到 C
将盘子 3 从 A 移动到 B
将盘子 1 从 C 移动到 A
将盘子 2 从 C 移动到 B
将盘子 1 从 A 移动到 B

相关推荐

  1. <span style='color:red;'>hanoi</span><span style='color:red;'>塔</span>

    hanoi

    2024-04-23 08:08:04      15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 08:08:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 08:08:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 08:08:04       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 08:08:04       20 阅读

热门阅读

  1. JVM中的堆和栈

    2024-04-23 08:08:04       13 阅读
  2. 掌控基础设施,加速 DevOps 之旅:IaC 深度解析

    2024-04-23 08:08:04       12 阅读
  3. Web 常见十大漏洞原理及利用方式

    2024-04-23 08:08:04       15 阅读
  4. 2024年深圳杯&东三省数学建模联赛赛题浅析

    2024-04-23 08:08:04       16 阅读
  5. STM32 J-LINK

    2024-04-23 08:08:04       16 阅读
  6. 张量堆叠函数torch.stack()

    2024-04-23 08:08:04       10 阅读