汉诺塔(Tower of Hanoi)是一个经典的递归问题。这个问题涉
及到三个杆子和一堆不同大小的盘子,开始时所有盘子都按大小
顺序套在第一个杆子上。目标是将这些盘子从第一个杆子移动到
第三个杆子,同时遵循以下规则:
1. 一次只能移动一个盘子。
2. 大盘子不能放在小盘子上面。
3. 可以利用第三个杆子作为辅助。
下面是一个用 Python 实现的汉诺塔解决方案:
python 复制代码
def hanoi(n, source, target, auxiliary):
if n > 0:
# 将 n-1 个盘子从 source 移动到 auxiliary,以 target 为
辅助
hanoi(n-1, source, auxiliary, target)
# 将最大的盘子从 source 移动到 target
print(f'Move disk {n} from {source} to {target}')
# 将 n-1 个盘子从 auxiliary 移动到 target,以 source 为
辅助
hanoi(n-1, auxiliary, target, source)