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

汉罗塔问题的递归实现「建议收藏」#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)
上一篇 2022年10月12日 上午11:00
下一篇 2022年10月12日 上午11:16


相关推荐

  • git clone克隆或下载一个仓库单个文件夹

    git clone克隆或下载一个仓库单个文件夹git学习之gitclone克隆或下载一个仓库单个文件夹有时候因为需要我们只想gitclone下仓库的单个或多个文件夹,而不是全部的仓库内容,这样就很省事,所以下面就开始教程啦在Git1.7.0以前,这无法实现,但是幸运的是在Git1.7.0以后加入了SparseCheckout模式,这使得CheckOut指定文件或者文件夹成为可能。举个例子:现在有…

    2022年7月21日
    85
  • PyCharm 2021.5激活码(最新序列号破解)

    PyCharm 2021.5激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    63
  • pycharm配置tensorflow环境_python3.6对应的tensorflow版本

    pycharm配置tensorflow环境_python3.6对应的tensorflow版本Round1:打开PyCharm,点击File->Settings,点击弹出界面的“+”号,在搜索框中键入关键字“tensorflow”,从列表中选中“tensorflow”,点击下方的“InstallPackage”,等待一段时间,华丽丽的安装失败了-_-Round2:在Pycharm的terminal中运行pipinstalltensorflow,在等了半小时后,倒计时还有3个多小时,我弃疗了!安装失败!Round3:以上用的都是官方的源,现在考虑换成国

    2022年8月26日
    8
  • pycharm21.3 激活 3月最新注册码

    pycharm21.3 激活 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    89
  • docker 修改容器时间_docker容器时间与宿主机不一致

    docker 修改容器时间_docker容器时间与宿主机不一致前言用docker搭建的Jenkins环境时间显示和我们本地时间相差8个小时,需修改容器内部的系统时间查看时间查看系统时间date-R进入docker容器内部,查看容器时间dockere

    2022年8月6日
    6
  • java如何实现多继承

    java如何实现多继承在 java 中 原则上是不允许多继承的 也就是类与类之间只可以单继承 那么 有没有办法 可以在不使用接口的情况下实现多继承呢 nbsp 答案是可以 使用内部类就可以多继承 严格来说 还不是实现多继承 但是这种方法可以实现多继承所需的功能 所以把它称为实现了多继承 下面就举个例子 假如有一个打电话类 Call 里面实现了一个可以打电话的功能的方法 callSomebody StringphoneN

    2026年3月19日
    2

发表回复

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

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