C语言解决汉诺塔问题:
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 柱子。