python实现递归经典算法“汉诺塔”带代码注释
时间: 2023-10-30 14:05:02 浏览: 124
好的,以下是Python实现递归经典算法“汉诺塔”的代码注释:
```python
def hanoiTower(n, A, B, C):
# n表示盘子的个数,A、B、C表示三个柱子的名称,其中A为起始柱子,B为中间柱子,C为目标柱子
if n == 1:
print(A, "->", C) # 若只有一个盘子,则直接将其从A柱移动到C柱
else:
hanoiTower(n-1, A, C, B) # 将A柱的前n-1个盘子移动到B柱,以C柱为中间柱
print(A, "->", C) # 将A柱的最后一个盘子移动到C柱
hanoiTower(n-1, B, A, C) # 将B柱的n-1个盘子移动到C柱,以A柱为中间柱
# 示例演示
hanoiTower(3, "A", "B", "C") # 将3个盘子从A柱移动到C柱
```
运行结果如下:
```
A -> B
A -> C
B -> C
```
该代码通过递归实现经典算法“汉诺塔”,基本思想是将问题不断拆解成更小的子问题进行求解,并在之后将子问题的解整合起来得到原问题的解。
若您有其他问题,欢迎继续提问。
相关问题
用python递归经典算法汉诺塔
好的,我可以回答这个问题。汉诺塔是一种经典的递归算法,可以用Python实现。以下是汉诺塔的Python代码:
```Python
def hanoi(n, a, b, c):
if n > 0:
hanoi(n-1, a, c, b)
print("Move disk %d from %s to %s" % (n, a, c))
hanoi(n-1, b, a, c)
hanoi(3, 'A', 'B', 'C')
```
这段代码的功能是将3个盘子从A柱子移动到C柱子。f(n,a,b,c)表示将n个盘子从a柱子移动到c柱子,b柱子作为辅助。首先将n-1个盘子从a柱子移动到b柱子,再将最后一个盘子从a柱子移动到c柱子,最后将n-1个盘子从b柱子移动到c柱子即可。
python实现递归经典算法“汉诺塔”
汉诺塔算法是递归算法的经典案例,可以使用 Python 来实现。以下是该算法的 Python 代码:
```
def hanoi(n, A, B, C):
if n == 1:
print("Move disk 1 from", A, "to", C)
else:
hanoi(n-1, A, C, B)
print("Move disk", n, "from", A, "to", C)
hanoi(n-1, B, A, C)
# test the code
n = 3
hanoi(n, 'A', 'B', 'C')
```
其中,n 表示有几个盘子需要移动,A、B 和 C 则表示 3 个柱子的名称。运行代码后,程序会打印出移动每个盘子的步骤。
阅读全文