汉罗塔问题的递归实现「建议收藏」

汉罗塔问题的递归实现「建议收藏」#includeusingnamespacestd;voidmove(intm,chara,charb);voidhanoi(intm,charone,chartwo,charthree);intmain(){  chararray[10]={‘A’,’B’,’C’,’D’,’E’,’F’};  hanoi(4,’A’,’B’,’C’);

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
#include <iostream>

using namespace std;

void move(int m,char a,char b);

void hanoi(int m,char one,char two,char three);

int main(){ 

    hanoi(4,’A’,’B’,’C’);

    return 0;

}

void move(int m,char a,char b){

    cout<<m<<” from “<<a<<“—>”<<b<<endl;

}

//hanoi的函数说明,借助two这个柱子把盘子从one移动到three这根柱子上

void hanoi(int m,char one,char two,char three){

    if(m==1){

        move(m,one,three);//如果只有一个盘子,就直接从第1个位置移动到第3个

    }else{

        /*

            如果需要移动的盘子m大于1个,思路是先把前m-1个盘子移动到中间的位置,然后再把第m个盘子移动到第三根柱子上

            然后再借助第一根柱子把前m-1个盘子移动到第3根柱子上

        */

        hanoi(m-1,one,three,two);

        move(m,one,three);

        hanoi(m-1,two,one,three);

    }

}

汉罗塔问题的递归实现「建议收藏」

其实递归的效率是非常低的,但是递归思路在解决某些问题的时候非常使用,主要体现在思路清晰,代码实现非常简单,困难是找到递归问题的结束点。

就拿汉罗塔问题来说,首先要移动第m个盘子,从A移动到C,必须先将前m-1个盘子从A移动到B,然后才能成功的把第m个盘子从A移动到C,第m个盘子成功的从A移动到C以后,剩下的有是一个m-1个盘子的汉罗塔问题,现在需求变成了需要把m-1个盘子从B借助A移动到C。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182863.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据学习之Hbase面试题

    大数据学习之Hbase面试题1,hbase读流程首先通过meta表找到要读数据的region所在的RegionServer,然后去BlockCash中读取,如果没有就去Memstore中读取,如果也没有,那就去Hfile中去读(1)客户端访问Zookeeper,获取存放目标数据的Region信息,从而找到对应的RegionServer。(2)通过RegionServer获取需要查找的数据。(3)Regionserver的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCa

    2022年5月28日
    40
  • TP5 分页样式[通俗易懂]

    TP5 分页样式[通俗易懂]自定义分页类放到extend\page\,这里也可以自己决定,命名空间对了就行    在extend\page\下新建Page.php把以下代码粘过去&lt;?phpnamespacepage;//+———————————————————————-//|ThinkPHP[WECAN…

    2022年7月17日
    20
  • datax(19):源码解读内置Transformer「建议收藏」

    datax(19):源码解读内置Transformer「建议收藏」通过datax(18)已经对transformer有了初步了解,继续撸代码,看datax已经内置的5种简单类型transformer;一、概述目前datax内置了5种常用的transformer,分别如下截取SubstrTransformer填充PadTransformer替换ReplaceTransformer过滤FilterTransformerGroovy类型GroovyTransformer二、SubstrTransformer主要是对record中的column的值进.

    2022年5月17日
    123
  • phpstorm2021.12激活【中文破解版】

    (phpstorm2021.12激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~AFH5…

    2022年3月30日
    46
  • 服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档…

    服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档…______________________________________________________________________________________________________________新风系统的方案设计方法:设计方案时,即便再简单的方案,我们也应该先做方案、再扒图纸、作出预算的程序,这样我们就不会丢项、报错。复杂的项目,应该编制联系人表格;方便现场沟通…

    2022年5月22日
    55
  • pix2pix论文(pix是什么意思)

    图像翻译,指从一副图像到另一副图像的转换。可以类比机器翻译,一种语言转换为另一种语言。下图就是一些典型的图像翻译任务:比如语义分割图转换为真实街景图,灰色图转换为彩色图,白天转换为黑夜……本文主要介绍图像翻译的三个比较经典的模型pix2pix,pix2pixHD,vid2vid。pix2pix提出了一个统一的框架解决了各类图像翻译问题, pix2pixHD则在pix2pix的基础上,较好的解决了高分辨率图像转换(翻译)的问题, vid2vid则在pix2pixHD的基础上,较好的

    2022年4月10日
    116

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号