C++解决汉诺塔问题

下面是C++中经典的递归算法实现汉诺塔问题:

复制代码
#include <iostream>
using namespace std;
 
void move(int n, char from, char to, char temp)
{
    if(n == 1)
    {
        cout << "move disk 1 from " << from << " to " << to << endl;
    }
    else
    {
        move(n - 1, from, temp, to);
        cout << "move disk " << n << " from " << from << " to " << to << endl;
        move(n - 1, temp, to, from);
    }
}
 
int main()
{
    int n = 3;
    move(n, 'A', 'C', 'B');
    return 0;
}

以上代码中,move函数用于移动汉诺塔的盘子,其中n为盘子的数目,from表示原柱,to表示目标柱,temp表示中间柱。当只有一个盘子时,直接从from柱移动到to柱即可,当有多个盘子时,先把上面的n-1个盘子从from柱经由to柱移动到temp柱,再把最后一个盘子从from柱移动到to柱,最后再把n-1个盘子从temp柱经由from柱移动到to柱。

相关推荐
天天进步2015几秒前
Python全栈项目实战:自建高效多媒体处理工具
开发语言·python
闻缺陷则喜何志丹1 分钟前
【 线性筛 调和级数】P7281 [COCI 2020/2021 #4] Vepar|普及+
c++·算法·洛谷·线性筛·调和级数
zzzsde3 分钟前
【Linux】线程概念与控制(1)线程基础与分页式存储管理
linux·运维·服务器·开发语言·算法
穿条秋裤到处跑4 分钟前
每日一道leetcode(2026.04.23):等值距离和
算法·leetcode·职场和发展
waterHBO5 分钟前
python + fast-wahisper 读取麦克风,实现语音转录,而且是实时转录。
开发语言·python
凤山老林8 分钟前
27-Java final 关键字
java·开发语言
少许极端8 分钟前
算法奇妙屋(四十九)-贡献法
java·算法·leetcode·贡献法
叶子野格10 分钟前
《C语言学习:数组》11
c语言·开发语言·c++·学习·visual studio
念何架构之路10 分钟前
图解defer
开发语言·后端·golang
武帝为此11 分钟前
【特征选择方法】
算法·数学建模