Hanoi 塔问题的递归算法
时间: 2023-09-24 22:02:47 浏览: 82
汉诺塔问题递归算法
5星 · 资源好评率100%
好的,下面是 Hanoi 塔问题的递归算法。Hanoi 塔问题是一个经典的递归问题,它的描述如下:
有三根柱子,分别为 A、B、C,A 柱子上有 n 个不同大小的圆盘,这些圆盘按照大小从大到小依次放置,现在需要将这些圆盘从 A 柱子移动到 C 柱子上,移动的时候需要遵守以下规则:
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 柱子上的圆盘数量,a、b、c 分别表示 A、B、C 三根柱子。当 n 等于 1 时,直接将 A 柱子上的唯一一个圆盘移动到 C 柱子上;当 n 大于 1 时,先将 A 柱子上的前 n - 1 个圆盘移动到 B 柱子上,然后将最后一个圆盘移动到 C 柱子上,最后将 B 柱子上的 n - 1 个圆盘移动到 C 柱子上。
这样递归下去,直到所有的圆盘都移动到了 C 柱子上为止。
阅读全文