C语言用递归函数编写6阶汉诺塔程序
时间: 2024-10-12 18:07:26 浏览: 22
汉诺塔c语言递归.docx
C语言中的递归函数可以很好地解决汉诺塔问题。这是一个经典的递归问题,涉及到将一堆盘子从一根柱子移动到另一根柱子,每次只能移动最上面的一盘,并且大盘子永远不能放在小盘子之上。以下是六阶汉诺塔的递归解决方案:
```c
#include <stdio.h>
// 定义递归函数hanoi
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n > 0) { // 基本情况:当只剩一个盘子时,直接移动
hanoi(n - 1, from_rod, aux_rod, to_rod); // 将n-1个盘子从from移到aux
printf("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
hanoi(n - 1, aux_rod, to_rod, from_rod); // 将剩余盘子从aux移到to
}
}
int main() {
int num_disks = 6; // 指定为六阶汉诺塔
hanoi(num_disks, 'A', 'C', 'B'); // A代表起始柱子,C代表目标柱子,B作为辅助
return 0;
}
```
当你运行这个程序,它会按照正确的步骤打印出六级汉诺塔的转移过程。
阅读全文