定义函数解决汉诺塔问题:将A柱上的盘子通过B柱移动到C柱子,在main函数中输入汉诺塔盘子数n,输出移动路径。输出格式:"%c->%c " c语言代码
时间: 2024-01-22 12:17:52 浏览: 71
C语言实现解决汉诺塔问题
以下是C语言代码:
```c
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("%c->%c ", A, C);
} else {
hanoi(n - 1, A, C, B);
hanoi(1, A, B, C);
hanoi(n - 1, B, A, C);
}
}
int main() {
int n;
printf("请输入汉诺塔盘子数n:");
scanf("%d", &n);
printf("移动路径为:");
hanoi(n, 'A', 'B', 'C');
printf("\n");
return 0;
}
```
函数 `hanoi` 是递归实现汉诺塔问题的函数,参数 `n` 表示要移动的盘子数,参数 `A`、`B`、`C` 分别表示三个柱子。当 `n` 等于 1 时,直接将盘子从 A 柱移动到 C 柱;否则,先将 `n-1` 个盘子从 A 柱通过 C 柱移动到 B 柱,再将最后一个盘子从 A 柱移动到 C 柱,最后将 B 柱上的 `n-1` 个盘子通过 A 柱移动到 C 柱。主函数中先输入盘子数 `n`,然后调用 `hanoi` 函数输出移动路径。
阅读全文