p ython实现汉诺塔
时间: 2023-07-11 18:10:00 浏览: 113
下面是Python实现汉诺塔的代码:
```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")
```
其中,参数n表示盘子的数量,a、b、c表示三个柱子的名称。函数的逻辑很简单,当只有一个盘子时,直接将其从柱子a移动到柱子c;当有多个盘子时,先将上面的n-1个盘子从柱子a移动到柱子b,再将最底下的1个盘子从柱子a移动到柱子c,最后再将n-1个盘子从柱子b移动到柱子c。
相关问题
p ython实现递归汉诺塔
好的,以下是 Python 实现递归汉诺塔的代码:
```python
def move(n, A, B, C):
if n == 1:
print(f"Move disk {n} from {A} to {C}")
else:
move(n-1, A, C, B)
print(f"Move disk {n} from {A} to {C}")
move(n-1, B, A, C)
```
其中,n 表示盘子的数量,A、B、C 分别表示三根柱子,我们需要将 A 柱子上的 n 个盘子移动到 C 柱子上。每次移动的规则是:在 n-1 个盘子所在的柱子(假设为 A)上,将最大的盘子移到目标柱子(C),再将 n-1 个盘子移到中间柱子(B),最后将最大的盘子从中间柱子(B)移到目标柱子(C)上即可。
c 语言求汉诺塔问题
汉诺塔问题是经典的递归问题,可以使用递归算法来解决。以下是 C 语言求解汉诺塔问题的代码实现:
```c
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("Move disk %d from %c to %c\n", n, A, C);
return;
}
hanoi(n-1, A, C, B);
printf("Move disk %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
int main() {
int n;
printf("Enter the number of disks: ");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
运行代码,输入盘子的数量,即可输出移动过程。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)