用递归方法编程解决汉诺塔问题。
时间: 2023-06-18 22:03:14 浏览: 131
汉诺塔问题是一个经典的递归问题,其解法如下:
假设有三个柱子,分别为 A、B、C,其中 A 柱子上有从小到大的 n 个盘子,要将这 n 个盘子从 A 移动到 C,期间可以借助 B 柱子完成移动,但要求每次只能移动一个盘子,并且大盘子不能放在小盘子上面。
下面是 Python 代码实现:
```
def hanoi(n, A, B, C):
if n == 1:
print("Move disk 1 from", A, "to", C)
return
hanoi(n-1, A, C, B)
print("Move disk", n, "from", A, "to", C)
hanoi(n-1, B, A, C)
n = int(input("Enter the number of disks: "))
hanoi(n, 'A', 'B', 'C')
```
代码解析:
- `hanoi(n, A, B, C)` 函数表示将 n 个盘子从 A 移动到 C,其中 B 作为中间的辅助柱子。
- 当只有一个盘子时,直接将其从 A 移动到 C。
- 当有两个或两个以上的盘子时,先将前 n-1 个盘子从 A 移动到 B,再将第 n 个盘子从 A 移动到 C,最后将前 n-1 个盘子从 B 移动到 C。
- 递归调用 hanoi 函数,直到只有一个盘子为止。
示例输出:
```
Enter the number of disks: 3
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
阅读全文