用vs写一个64个盘子的汉诺塔递推子函数要求头文件用stdio。
时间: 2024-03-23 21:38:06 浏览: 45
用VB编写的汉诺塔程序
好的,下面是代码实现:
```c
#include <stdio.h>
void hanoi(int n, char from, char to, char via) {
if (n == 1) {
printf("%c -> %c\n", from, to);
return;
}
hanoi(n - 1, from, via, to);
printf("%c -> %c\n", from, to);
hanoi(n - 1, via, to, from);
}
int main() {
int n = 64;
hanoi(n, 'A', 'C', 'B');
return 0;
}
```
其中,`hanoi` 函数为汉诺塔递推子函数,`n` 为盘子的个数,`from` 为起始柱子,`to` 为目标柱子,`via` 为辅助柱子。在 `main` 函数中,我们将 `n` 设为 64,起始柱子设为 A,目标柱子设为 C,辅助柱子设为 B,然后调用 `hanoi` 函数即可。
这里使用了递归的思想,将大问题分解成更小的问题,直到问题规模变得足够小,可以直接解决。每次递归调用时,我们将 `n-1` 个盘子从起始柱子移动到辅助柱子上,然后将第 `n` 个盘子从起始柱子移动到目标柱子上,最后将 `n-1` 个盘子从辅助柱子移动到目标柱子上,完成整个过程。
阅读全文