|
Python汉诺塔问题,有A\B\C3根杆子。A上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
(1)每次只能移动一个圆盘
(2)大盘不能叠在小盘上面。
下面是一个使用递归算法解决汉诺塔问题的Python示例代码:
以下内容需要积分高于 5 才可浏览
def hanoi(n, source, target, auxiliary):
if n > 0:
# 将n-1个盘子从源杆移动到辅助杆
hanoi(n-1, source, auxiliary, target)
# 将最大的盘子从源杆移动到目标杆
print(f"移动盘子 {n} 从 {source} 到 {target}")
# 将n-1个盘子从辅助杆移动到目标杆
hanoi(n-1, auxiliary, target, source)
# 测试代码
n = int(input("请输入盘子的数量:"))
hanoi(n, 'A', 'C', 'B')
在这个代码中, hanoi 函数是递归的,它接受四个参数: n 表示要移动的盘子数量, source 表示源杆, target 表示目标杆, auxiliary 表示辅助杆。
首先,递归函数会将前n-1个盘子从源杆移动到辅助杆,然后将最大的盘子从源杆移动到目标杆,最后将前n-1个盘子从辅助杆移动到目标杆。
通过不断地调用递归函数,最终所有的盘子都会从源杆移动到目标杆。
你可以根据需要将该代码嵌入到你的程序中,并根据具体情况修改输出方式或其他逻辑。
|
|
|