C语言求解汉诺塔问题

C语言解决汉诺塔问题:

#include 
 
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 柱子。

你可能感兴趣的:(编程算法,c语言,算法,数据结构)