递归法写出汉诺塔程序c语言
时间: 2023-08-24 16:06:25 浏览: 86
好的,下面是汉诺塔的递归实现的 C 语言程序:
```c
#include <stdio.h>
void move(int n, char a, char b, char c);
int main()
{
int n;
printf("请输入汉诺塔的层数:");
scanf("%d", &n);
move(n, 'A', 'B', 'C');
return 0;
}
void move(int n, char a, char b, char c)
{
if (n == 1)
{
printf("将第 %d 个盘子从 %c 移动到 %c\n", n, a, c);
}
else
{
move(n - 1, a, c, b);
printf("将第 %d 个盘子从 %c 移动到 %c\n", n, a, c);
move(n - 1, b, a, c);
}
}
```
其中,`move` 函数实现了汉诺塔的递归操作。首先,判断如果只有一个盘子,则直接将它从 `a` 柱移动到 `c` 柱。否则,将前 `n - 1` 个盘子从 `a` 柱移动到 `b` 柱,然后将第 `n` 个盘子从 `a` 柱移动到 `c` 柱,最后将前 `n - 1` 个盘子从 `b` 柱移动到 `c` 柱。
阅读全文