前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法之美:汉诺塔(Hanoi)问题

算法之美:汉诺塔(Hanoi)问题

作者头像
Gabriel
发布2022-11-15 14:03:08
3250
发布2022-11-15 14:03:08
举报
文章被收录于专栏:C/C++C/C++

设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步: (1)以C盘为辅助,从A杆将1至n-1号盘移至B杆; (2)将A杆中剩下的第n号盘移至C杆; (3)以A杆为辅助;从B杆将1至n-1号盘移至C杆。

在这里插入图片描述
在这里插入图片描述

我们采用递归的方法解决该问题:(编译环境:Ubuntu18.04 Vim)

代码语言:javascript
复制
#include <stdio.h>

void hano(int n, int src, int aux ,int dest)/*n为移动盘子数,src为起始杆,dest为目标杆,aux为辅助杆*/
{
    if(n == 1)
    {
        printf("mov no.%d disc :from %c to %c\n",n,src,dest);

        return;
    }

    hano((n - 1),src,dest,aux);
    printf("mov no.%d disc: from %c to %c\n",(n - 1),src,dest);
    hano((n - 1),aux,src,dest);
}

int main()
{
    hano(3,'A','B','C');

    return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档