使用递归算法求解hanoi塔问题,写出hanoi塔的递归算法
时间: 2023-10-29 08:04:47 浏览: 143
形式化开发Hanoi塔问题非递归算法
Hanoi塔问题指的是将一个塔从A柱移动到C柱,其中A柱上有n个盘子,盘子大小不同,大的在下面,小的在上面,移动过程中不能将大的放在小的上面,也不能直接从A柱移动到C柱,需要借助B柱。以下是Hanoi塔的递归算法实现:
1.当塔中只有一个盘子时,直接将其从A柱移动到C柱。
2.当塔中有n个盘子时,将其分成三步:
将A柱上除最后一个盘子外的其他盘子全部移动到B柱
将A柱上最后一个盘子移动到C柱
将B柱上的所有盘子移动到C柱
以下是Hanoi塔的递归算法实现的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)
#测试
hanoi(3, 'A', 'B', 'C')
```
输出:
```
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
```
阅读全文