用c语言实现汉诺(Hanoi)塔求解问题
时间: 2023-11-28 09:05:48 浏览: 179
c语言实现的汉诺塔演示程序.zip
汉诺塔问题是一个经典的递归问题,可以用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` 函数求解汉诺塔问题。
阅读全文