汉诺塔python代码
时间: 2023-10-12 17:11:46 浏览: 109
以下是汉诺塔的 Python 代码:
```python
def hanoi(n, source, target, auxiliary):
if n > 0:
# 将 n-1 个盘子从源杆移动到辅助杆
hanoi(n-1, source, auxiliary, target)
# 将第 n 个盘子从源杆移动到目标杆
print("Move disk", n, "from", source, "to", target)
# 将 n-1 个盘子从辅助杆移动到目标杆
hanoi(n-1, auxiliary, target, source)
# 测试
hanoi(3, 'A', 'C', 'B')
```
输出结果:
```
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
相关问题
汉诺塔Python代码讲解
汉诺塔(Hanoi Tower)是一个经典的递归问题,它涉及到三个柱子和一些大小不等的圆盘。游戏的目标是从第一个柱子将所有盘子移动到第三个柱子,每次只能移动一个大盘子,并且大盘子不能放在小盘子之上。
下面是一个简单的Python代码示例,演示了如何用递归来解决汉诺塔问题:
```python
def hanoi(n, source, auxiliary, target):
if n > 0:
# Move n - 1 disks from source to auxiliary, so they are out of the way
hanoi(n - 1, source, target, auxiliary)
# Move the nth disk from source to target
print(f"Move disk {n} from {source} to {target}")
# Move the n - 1 disks that we left on auxiliary to target
hanoi(n - 1, auxiliary, source, target)
# Call the function with the number of disks and initial positions
hanoi(3, 'A', 'B', 'C')
```
在这个代码中,`hanoi`函数接受四个参数:圆盘的数量`n`、起始柱子`source`、辅助柱子`auxiliary`和目标柱子`target`。首先,将前`n-1`个盘子从起始柱子移到辅助柱子;然后移动最大的那个盘子到目标柱子;最后,再将之前留在辅助柱子的盘子移动到目标柱子上。
受限的汉诺塔python代码
当然可以。汉诺塔是一个经典的递归问题,通常涉及到将一堆盘子从一根柱子移动到另一根柱子,规则是每次只能移动最上面的一块盘子,并且大盘子不能放在小盘子之上。以下是受限的三柱子汉诺塔问题的Python递归解决方案:
```python
def hanoi(n, source, auxiliary, target):
if n > 0:
# 移动n-1个盘子到辅助柱子
hanoi(n - 1, source, target, auxiliary)
# 将最大的盘子移动到目标柱子
print(f"Move disk {n} from {source} to {target}")
# 最后,将辅助柱子上剩余的n-1个盘子移动到目标柱子
hanoi(n - 1, auxiliary, source, target)
# 调用函数开始游戏,源柱子为A,辅助柱子为B,目标柱子为C
hanoi(3, 'A', 'B', 'C')
```
在这个代码里,`n`代表盘子的数量,`source`表示起始柱子,`auxiliary`表示临时柱子,`target`表示目标柱子。当你运行这个程序,它会按照汉诺塔的步骤一步步地完成任务。
阅读全文