汉诺塔问题是一个经典的递归问题,可以通过以下Python代码来解决:
def hanoi(n, source, auxiliary, target):
基本情况:只有一个盘子时
if n == 1:
print(f"移动盘子{n}从{source}到{target}")
return
递归情况:
1. 将n-1个盘子从source移到auxiliary
hanoi(n-1, source, target, auxiliary)
2. 将最大的盘子从source移到target
print(f"移动盘子{n}从{source}到{target}")
3. 将n-1个盘子从auxiliary移到target
hanoi(n-1, auxiliary, source, target)
测试代码
print("3个盘子的移动步骤:")
hanoi(3, 'A', 'B', 'C')
这段代码定义了一个名为`hanoi`的函数,它接受四个参数:`n`表示盘子的数量,`source`、`auxiliary`和`target`分别表示源柱子、辅助柱子和目标柱子。函数通过递归的方式将`n`个盘子从`source`柱子移动到`target`柱子,同时保证每次只能移动一个盘子,并且大盘子不能放在小盘子上面。
运行上述代码将会输出移动3个盘子的步骤。