阅读量:0
以下是使用C语言编写汉诺塔程序的示例代码:
#include <stdio.h> void hanoi(int n, char from, char to, char aux) { if (n == 1) { printf("Move disk 1 from %c to %c\n", from, to); return; } hanoi(n-1, from, aux, to); printf("Move disk %d from %c to %c\n", n, from, to); hanoi(n-1, aux, to, from); } int main() { int n; printf("Enter the number of disks: "); scanf("%d", &n); printf("Steps to solve the Hanoi Tower problem:\n"); hanoi(n, 'A', 'C', 'B'); return 0; }
在这个程序中,我们使用递归来解决汉诺塔问题。hanoi
函数接受四个参数:n
表示盘子的数量,from
表示起始柱子,to
表示目标柱子,aux
表示辅助柱子。当n为1时,我们直接将盘子从起始柱子移动到目标柱子上。对于n大于1的情况,我们将n-1个盘子从起始柱子移动到辅助柱子上,然后将第n个盘子从起始柱子移动到目标柱子上,最后将n-1个盘子从辅助柱子移动到目标柱子上。这个过程通过递归调用hanoi
函数来实现。
在main
函数中,我们首先从用户输入中获取盘子的数量。然后调用hanoi
函数来解决汉诺塔问题,并打印每一步的移动过程。
运行程序后,它会要求你输入盘子的数量,然后输出解决汉诺塔问题的步骤。