阅读量:1
C语言的汉诺塔代码可以按照以下方式编写:
#include <stdio.h> // 定义移动盘子的函数 void move(int n, char from, char to, char temp) { if (n == 1) { printf("Move disk 1 from %c to %c\n", from, to); return; } move(n - 1, from, temp, to); printf("Move disk %d from %c to %c\n", n, from, to); move(n - 1, temp, to, from); } int main() { int n; printf("Enter the number of disks: "); scanf("%d", &n); printf("Steps to solve the Hanoi Tower problem:\n"); move(n, 'A', 'C', 'B'); return 0; }
在这段代码中,move
函数负责实现汉诺塔的移动逻辑。递归地将上方的 n-1 个盘子从 from 杆移动到 temp 杆,然后将最底下的第 n 个盘子从 from 杆移动到 to 杆,最后将之前移动到 temp 杆上的 n-1 个盘子从 temp 杆移动到 to 杆。最后在 main
函数中,用户输入盘子的数量,然后调用 move
函数来解决汉诺塔问题。程序会打印出移动每个盘子的步骤。