C语言求解汉诺塔问题

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

相关推荐
潼心1412o33 分钟前
C语言(长期更新)第15讲 指针详解(五):习题实战
c语言·开发语言
梁辰兴1 小时前
数据结构:排序
数据结构·算法·排序算法·c·插入排序·排序·交换排序
野犬寒鸦2 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试
菜鸟得菜2 小时前
leecode kadane算法 解决数组中子数组的最大和,以及环形数组连续子数组的最大和问题
数据结构·算法·leetcode
楼田莉子3 小时前
C++算法专题学习——分治
数据结构·c++·学习·算法·leetcode·排序算法
一支鱼3 小时前
leetcode常用解题方案总结
前端·算法·leetcode
ulias2123 小时前
各种背包问题简述
数据结构·c++·算法·动态规划
m0_570466413 小时前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法
吃着火锅x唱着歌3 小时前
LeetCode 1537.最大得分
算法·leetcode·职场和发展
数模加油站3 小时前
25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
算法·数学建模·数模国赛·高教社杯全国大学生数学建模竞赛