Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

汉诺塔问题python

作者:清梦独行   发布日期:2025-06-27   浏览:96

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

    参数:
    n -- 需要移动的盘子数量
    source -- 源柱子 (通常标记为 'A')
    auxiliary -- 辅助柱子 (通常标记为 'B')
    target -- 目标柱子 (通常标记为 'C')
    """
    if n == 1:
        print(f"将盘子 1 从 {source} 移动到 {target}")
        return
    # 将 n-1 个盘子从源柱子移动到辅助柱子,使用目标柱子作为中转
    hanoi(n - 1, source, target, auxiliary)
    # 将第 n 个盘子从源柱子移动到目标柱子
    print(f"将盘子 {n} 从 {source} 移动到 {target}")
    # 将 n-1 个盘子从辅助柱子移动到目标柱子,使用源柱子作为中转
    hanoi(n - 1, auxiliary, source, target)

# 示例调用:移动 3 个盘子从柱子 A 到柱子 C,使用柱子 B 作为辅助
hanoi(3, 'A', 'B', 'C')

解释说明:

  • 函数定义hanoi 函数接收四个参数:n 表示需要移动的盘子数量,source 是源柱子,auxiliary 是辅助柱子,target 是目标柱子。
  • 递归终止条件:当 n == 1 时,直接将盘子从源柱子移动到目标柱子,并结束递归。
  • 递归过程
    1. 先将 n-1 个盘子从源柱子移动到辅助柱子(使用目标柱子作为中转)。
    2. 然后将第 n 个盘子从源柱子移动到目标柱子。
    3. 最后将 n-1 个盘子从辅助柱子移动到目标柱子(使用源柱子作为中转)。

通过这种方式,汉诺塔问题可以通过递归来解决。

上一篇:python translate

下一篇:如何运行python脚本

大家都在看

python时间格式

python ord和chr

python中的yield

python自定义异常

python list.pop

python的for i in range

npm config set python

python代码简单

python读取文件夹

python中turtle

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站