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

汉罗塔问题的递归实现「建议收藏」#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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • android SubString截取字符串

    android SubString截取字符串

  • LDAP协议介绍[通俗易懂]

    LDAP协议介绍[通俗易懂]LDAP协议基础概念 1.从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合“一次记录多次读取”。常用LDAP服务存储的信息: 公司的物理设备信息(如打印机,它的IP地址、存放位置、厂商、购买时间等)公开的员工信息(地址、电话、电子邮件…)合同和账号信息(客户信息、产品交付日期、投标信息、项目信息…)凭证信息(认证凭证、许可证凭证…)2

    2022年10月31日
  • 异常处理面试题_运行值长面试题

    异常处理面试题_运行值长面试题java提供了两种异常机制。一种是运行时异常(RuntimeExepction),一种是受检异常(checkedexecption)。受检异常:我们经常遇到的IO异常及sql异常就属于检查式异常。对于这种异常,java编译器要求我们必须对出现的这些异常进行catch,面对这种异常要么往上抛,要么就catch运行时异常:我们可以不处理。当出现这样的异常时,总是由虚拟机接管。RuntimeExec

  • 轻松理解 Python 中的 async await 概念

    轻松理解 Python 中的 async await 概念前言写这篇文章是受xinghun85的这篇博客的启发,但是人家后面写的东西跳跃太快,有点没看懂,自己在此做一个补充.我希望能用一个最平易近人的例子,把Python协程中的async/await概念讲清楚,希望能够帮助大家有一个形象化的认识.注:所有的讲解都在代码的注释里.fromtimeimportsleep,timedefdemo1():…

  • vim复制粘贴_vim怎么复制粘贴到其他程序

    vim复制粘贴_vim怎么复制粘贴到其他程序Vim复制粘贴探秘Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情。每当学会了vim的一个新功能,就会很大地提高工作效率。有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim的强大。而这样何尝不是一件好事呢,只要有的学习,就有的提高。最近使用Vim来写博客,发现在Vim中粘贴Python代码后,缩进就全乱了。仔细研究了以下,原来是自动缩进的缘故,于是做如下设置::setnoainosi取消了自动缩进和智能缩进,这样粘贴就不会错行了。但

  • poweroff 命令_powercfg -h off 函数出了问题

    poweroff 命令_powercfg -h off 函数出了问题2019-02-17基础命令学习目录首页原文链接:https://www.cnblogs.com/Baron-Lu/p/6951297.html基础命令学习目录首页原文链接:https://w

发表回复

您的电子邮箱地址不会被公开。

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