使用c语言实现汉诺(Hanoi)塔求解问题
时间: 2023-12-28 08:06:21 浏览: 140
汉诺塔问题是一种经典的递归问题,可以使用 C 语言实现。下面是一个示例程序:
```c
#include <stdio.h>
void hanoi(int n, char from, char to, char via) {
if (n == 1) {
printf("%c -> %c\n", from, to);
} else {
hanoi(n - 1, from, via, to);
printf("%c -> %c\n", from, to);
hanoi(n - 1, via, to, from);
}
}
int main() {
int n;
printf("请输入汉诺塔的层数:");
scanf("%d", &n);
hanoi(n, 'A', 'C', 'B');
return 0;
}
```
在上面的代码中,`hanoi` 函数是一个递归函数,用于求解汉诺塔问题。它接受三个参数:`n` 表示当前要移动的盘子数,`from` 表示起始柱子,`to` 表示目标柱子,`via` 表示中间柱子。当 `n` 等于 1 时,直接将起始柱子上的盘子移动到目标柱子上;否则,先将 `n-1` 个盘子从起始柱子移动到中间柱子上,再将第 `n` 个盘子从起始柱子移动到目标柱子上,最后将 `n-1` 个盘子从中间柱子移动到目标柱子上。在 `main` 函数中,先读入汉诺塔的层数,然后调用 `hanoi` 函数求解问题。
相关问题
用c语言实现汉诺(Hanoi)塔求解问题
汉诺塔问题是一个经典的递归问题,可以用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;
}
```
在这个程序中,`hanoi` 函数采用递归的方式求解汉诺塔问题。其中,`n` 表示要移动的盘子数量,`A`、`B`、`C` 表示三个塔座。当只有一个盘子时,直接将它从 A 塔座移动到 C 塔座;否则,将前 n-1 个盘子从 A 塔座移动到 B 塔座,然后将最后一个盘子从 A 塔座移动到 C 塔座,最后将前 n-1 个盘子从 B 塔座移动到 C 塔座即可。
在主函数中,输入要移动的盘子数量,调用 `hanoi` 函数求解汉诺塔问题。
C语言实现汉诺塔求解问题
汉诺塔问题是经典的递归问题,C语言实现代码如下:
```c
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("Move disk %d from rod %c to rod %c\n", n, A, C);
return;
}
hanoi(n-1, A, C, B);
printf("Move disk %d from rod %c to rod %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;
}
```
代码中的 `hanoi` 函数使用递归的方式求解汉诺塔问题。当只有一个盘子时,直接将其从起始柱子 A 移动到目标柱子 C,然后返回。当盘子数量大于 1 时,先将 n-1 个盘子从起始柱子 A 移动到辅助柱子 B,然后将起始柱子 A 上的最后一个盘子移动到目标柱子 C,最后再将辅助柱子 B 上的 n-1 个盘子移动到目标柱子 C。
阅读全文
相关推荐
![](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)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)