python实现递归经典算法“汉诺塔”带代码注释
时间: 2023-10-30 11:05:01 浏览: 86
好的,我会尽力回答您的问题。
以下是Python实现递归经典算法“汉诺塔”的代码注释:
```python
def hanoi(n, a, b, c):
"""
递归实现汉诺塔
n: 表示有n个盘子需要移动
a: 表示起始柱子
b: 表示中间柱子
c: 表示目标柱子
注意:柱子的编号可以是任意的,这里用a、b、c只是为了方便理解
"""
if n == 1:
# 将最后一个盘子从a柱子移动到c柱子
print("将编号为1的盘子从 %s 移动到 %s" % (a, c))
else:
# 将前n-1个盘子从a柱子借助c柱子移动到b柱子
hanoi(n-1, a, c, b)
# 将最后一个盘子从a柱子移动到c柱子
print("将编号为%d的盘子从 %s 移动到 %s" % (n, a, c))
# 将前n-1个盘子从b柱子借助a柱子移动到c柱子
hanoi(n-1, b, a, c)
# 示例,移动有3个盘子时
hanoi(3, "A", "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 个柱子的名称。运行代码后,程序会打印出移动每个盘子的步骤。
阅读全文