基于递归算法的汉诺塔问题求解
汉诺塔问题是经典的递归算法应用案例,其目标是将所有圆盘从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
接收圆盘数量、源柱子、辅助柱子和目标柱子作为参数,通过递归调用自身实现圆盘的移动,并打印每一步的操作过程。
443B
文件大小:
评论区