C语言解决汉诺塔问题:
#include <stdio.h>void move(int n, char a, char b, char c)
{if(n == 1){printf("%c --> %c\n", a, c);return;}move(n - 1, a, c, b);printf("%c --> %c\n", a, c);move(n - 1, b, a, c);
}int main()
{int n;printf("请输入数字n:");scanf("%d", &n);printf("移动步骤如下:\n");move(n, 'A', 'B', 'C');return 0;
}
在此代码中,我们定义了一个 move 函数,其中 n 表示要移动的盘子数目,a, b, c 分别表示 3 根柱子的名称。
当盘子数为 1 时,我们直接将盘子从 A 柱子移动到 C 柱子。当盘子数大于 1 时,我们先将 n - 1 个盘子从 A 柱子移动到 B 柱子,然后将最后一个盘子从 A 柱子移动到 C 柱子,最后将 n - 1 个盘子从 B 柱子移动到 C 柱子。