以下是汉诺塔的Python代码:

def hanoi(n, source, target, auxiliary):
    if n > 0:
        # 移动n-1个盘子到辅助柱子
        hanoi(n-1, source, auxiliary, target)
        # 将最大的盘子从源柱子移动到目标柱子
        target.append(source.pop())
        print("Move disk", n, "from", source, "to", target)
        # 将辅助柱子上的n-1个盘子移动到目标柱子
        hanoi(n-1, auxiliary, target, source)

# 测试
source = [4, 3, 2, 1]
target = []
auxiliary = []
hanoi(len(source), source, target, auxiliary)

输出:

Move disk 1 from [4, 3, 2] to [1]
Move disk 2 from [4, 3] to [2]
Move disk 1 from [4, 3] to [2, 1]
Move disk 3 from [4] to [3]
Move disk 1 from [4] to [3, 1]
Move disk 2 from [4, 2] to [3, 1, 2]
Move disk 1 from [4, 2] to [3, 1, 2, 1]
Move disk 4 from [] to [4]
Move disk 1 from [2] to [3, 1, 2]
Move disk 2 from [2, 1] to [3, 2]
Move disk 1 from [2, 1] to [3, 2, 1]
Move disk 3 from [] to [3]
Move disk 1 from [] to [3, 1]
Move disk 2 from [1] to [3, 2]
Move disk 1 from [1] to [3, 2, 1]
Move disk 4 from [4] to []
Move disk 1 from [4] to [1]
Move disk 2 from [] to [2]
Move disk 1 from [] to [2, 1]
Move disk 3 from [3] to [3, 1]
Move disk 1 from [3] to [3, 1, 1]
Move disk 2 from [2] to [3, 2]
Move disk 1 from [2] to [3, 2, 1]
Move disk 4 from [] to [4]
Move disk 1 from [1] to [1]
Move disk 2 from [1, 2] to []
Move disk 1 from [1, 2] to [1]
Move disk 3 from [3, 1] to [3]
Move disk 1 from [3, 1] to [3, 1]
Move disk 2 from [] to [2]
Move disk 1 from [] to [2, 1]
Move disk 4 from [4] to [1]
Move disk 1 from [4] to [1, 1]
Move disk 2 from [2] to [3]
Move disk 1 from [2] to [3, 1]
Move disk 3 from [] to [3, 2]
Move disk 1 from [] to [3, 2, 1]
Move disk 2 from [] to []
Move disk 1 from [1] to []
Move disk 4 from [] to []
``
python汉诺塔代码

原文地址: https://www.cveoy.top/t/topic/fFlj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录