python 汉诺塔
时间: 2023-11-07 07:06:16 浏览: 118
汉诺塔问题是一个经典的递归问题。下面是使用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, 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, 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表示汉诺塔的层数,A、B、C分别表示三根柱子。实现递归函数时,首先判断n是否等于1,如果是,则直接将A柱子上的最后一个盘子移动到C柱子上;否则,将A柱子上的n-1个盘子通过C柱子移动到B柱子上,然后将A柱子上的最后一个盘子移动到C柱子上,最后将B柱子上的n-1个盘子通过A柱子移动到C柱子上。
调用函数时,传入汉诺塔的层数和三根柱子的名称即可:
```python
hanoi(3, "A", "B", "C")
```
输出结果为:
```
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
```
阅读全文