用C语言实现汉诺塔求解问题
时间: 2023-10-10 22:10:57 浏览: 175
汉诺塔问题是经典的递归问题,可以用递归方式简单地解决。以下是用 C 语言实现汉诺塔问题的代码:
```c
#include <stdio.h>
void hanoi(int n, char a, char b, char c) {
if (n == 1) {
printf("%c -> %c\n", a, c);
} else {
hanoi(n-1, a, c, b);
printf("%c -> %c\n", a, c);
hanoi(n-1, b, a, c);
}
}
int main() {
int n;
printf("请输入汉诺塔的层数:");
scanf("%d", &n);
printf("移动步骤如下:\n");
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
解释一下上面的代码:
1. `hanoi` 函数是递归解决汉诺塔问题的函数。参数 `n` 表示要移动的盘子数,`a` 表示起始柱子,`b` 表示中间柱子,`c` 表示目标柱子。
2. 当 `n=1` 时,直接将第一个盘子从起始柱子移动到目标柱子即可。
3. 当 `n>1` 时,先将前 `n-1` 个盘子从起始柱子移动到中间柱子,然后将第 `n` 个盘子从起始柱子移动到目标柱子,最后将前 `n-1` 个盘子从中间柱子移动到目标柱子。
4. 在 `main` 函数中,首先输入要移动的盘子数 `n`,然后调用 `hanoi` 函数求解并输出移动步骤。
以上就是用 C 语言实现汉诺塔问题的代码。
阅读全文
相关推荐
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.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/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20250102104920.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)