c语言重述解决汉诺塔问题的算法,汉诺塔问题的程序实现(hanoi塔)
时间: 2023-09-27 20:06:02 浏览: 99
C语言-汉诺塔问题解决源码.zip
汉诺塔问题是一个经典的递归问题,其算法描述如下:
1. 将n-1个盘子从起始柱移动到过渡柱
2. 将第n个盘子从起始柱移动到目标柱
3. 将n-1个盘子从过渡柱移动到目标柱
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);
} else {
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`。当`n`为1时,直接将盘子从起始柱移动到目标柱。当`n`大于1时,先将n-1个盘子从起始柱移动到过渡柱,再将第n个盘子从起始柱移动到目标柱,最后将n-1个盘子从过渡柱移动到目标柱。在`main`函数中,通过用户输入盘子的数量,调用`Hanoi`函数求解汉诺塔问题。
阅读全文