Python 汉罗塔
时间: 2024-05-13 12:11:32 浏览: 14
Python 汉罗塔是一个经典的递归算法问题。其目的是将一堆盘子从一个柱子上移动到另一个柱子上,其中有以下规则:
1. 每次只能移动一个盘子。
2. 大盘子不能放在小盘子上面。
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 个盘子从 A 移动到 C 的操作。
相关问题
汉罗塔python代码
汉罗塔(Tower of Hanoi)是经典的递归问题,下面是一个用 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 # 盘子的数量
source = "A" # 源柱的名称
target = "C" # 目标柱的名称
auxiliary = "B" # 辅助柱的名称
hanoi(n, source, target, auxiliary)
```
以上代码可以将三个盘子从柱 A 移动到柱 C。可以根据需要修改盘子数量和柱的名称。
用Python写一个汉罗塔代码
以下是Python实现汉罗塔的代码:
```
def hanoi(n, source, auxiliary, target):
if n > 0:
# 将n-1个盘子从源柱移动到辅助柱
hanoi(n - 1, source, target, auxiliary)
# 将第n个盘子从源柱移动到目标柱
target.append(source.pop())
# 将n-1个盘子从辅助柱移动到目标柱
hanoi(n - 1, auxiliary, source, target)
# 测试代码
source = [5, 4, 3, 2, 1]
target = []
auxiliary = []
hanoi(len(source), source, auxiliary, target)
print(source, auxiliary, target) # 输出 ([], [], [5, 4, 3, 2, 1])
```
在这个代码中,我们定义了一个`hanoi`函数,该函数接收三个参数:`n`,表示盘子的数量;`source`,表示源柱;`auxiliary`,表示辅助柱;`target`,表示目标柱。在函数中,我们使用递归的方式,将所有盘子从源柱移动到目标柱。具体来说,我们先将前`n-1`个盘子从源柱移动到辅助柱,然后将第`n`个盘子从源柱移动到目标柱,最后将剩余的`n-1`个盘子从辅助柱移动到目标柱。在移动盘子的过程中,我们使用`pop`和`append`函数来从柱子中取出和放入盘子。在测试代码中,我们创建了一个有5个盘子的源柱,并将其移动到一个空的目标柱中,最后输出了三个柱子的状态。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)