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
时,直接将盘子从源柱子移动到目标柱子,并结束递归。n-1
个盘子从源柱子移动到辅助柱子(使用目标柱子作为中转)。n
个盘子从源柱子移动到目标柱子。n-1
个盘子从辅助柱子移动到目标柱子(使用源柱子作为中转)。通过这种方式,汉诺塔问题可以通过递归来解决。
上一篇:python translate
下一篇:如何运行python脚本
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站