Python 汉诺塔
时间: 2023-11-29 20:44:44 浏览: 103
以下是Python实现汉诺塔问题的代码:
```python
def hanoi(n, A, B, C):
if n == 1:
print(A, '->', C)
else:
hanoi(n-1, A, C, B)
print(A, '->', C)
hanoi(n-1, B, A, C)
n = int(input("请输入汉诺塔的层数:"))
hanoi(n, 'A', 'B', 'C')
```
运行结果:
```
请输入汉诺塔的层数:3
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
```
相关问题
python 汉诺塔
汉诺塔问题是一个经典的递归问题。下面是使用Python解决汉诺塔问题的代码:
```python
def hanoi(n, source, target, auxiliary):
if n > 0:
# 将n-1个圆盘从source移动到auxiliary
hanoi(n-1, source, auxiliary, target)
# 将第n个圆盘从source移动到target
print(f"Move disk {n} from {source} to {target}")
# 将n-1个圆盘从auxiliary移动到target
hanoi(n-1, auxiliary, target, source)
# 测试代码
n = 3 # 圆盘个数
source = "A" # 初始柱子
target = "C" # 目标柱子
auxiliary = "B" # 辅助柱子
hanoi(n, source, target, auxiliary)
```
以上代码定义了一个`hanoi`函数来解决汉诺塔问题。函数接受四个参数:圆盘个数`n`,初始柱子`source`,目标柱子`target`和辅助柱子`auxiliary`。函数使用递归的方式,将`n-1`个圆盘从初始柱子移动到辅助柱子,然后将第`n`个圆盘从初始柱子移动到目标柱子,最后将`n-1`个圆盘从辅助柱子移动到目标柱子。
python汉诺塔代码
当然可以!以下是一个用 Python 编写的汉诺塔问题的代码:
```python
def hanoi(n, source, target, auxiliary):
if n > 0:
# 将 n-1 个盘子从源杆移动到辅助杆上
hanoi(n-1, source, auxiliary, target)
# 将第 n 个盘子从源杆移动到目标杆上
print(f"将盘子 {n} 从 {source} 移动到 {target}")
# 将 n-1 个盘子从辅助杆移动到目标杆上
hanoi(n-1, auxiliary, target, source)
# 测试代码
n = 3 # 盘子的数量
hanoi(n, 'A', 'C', 'B')
```
这段代码使用递归的方式实现了汉诺塔问题的解法。其中 `n` 表示盘子的数量,`source` 表示源杆,`target` 表示目标杆,`auxiliary` 表示辅助杆。在每一步移动中,我们将 n-1 个盘子从源杆移动到辅助杆上,然后将第 n 个盘子从源杆移动到目标杆上,最后将 n-1 个盘子从辅助杆移动到目标杆上。通过递归调用这个过程,就可以完成整个汉诺塔问题的解决。
阅读全文