汉罗塔递归c_递归实现汉诺塔问题

汉罗塔递归c_递归实现汉诺塔问题递归解决汉罗塔问题

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

Jetbrains全系列IDE稳定放心使用

思路

因为要将 A 柱上的圆盘全部转移到 C 柱上,所以先将最下面的最大的圆盘转移到 C 柱,将上面所有的圆盘看成一个整体,那么将这个整体转移到 B 柱上就可以将最大的圆盘转移到 C 柱了。然后,将现在 B 柱上最大的圆盘转移到 C 盘上需要借助 A 盘。重复上面的步骤,利用递归的思想。

代码

package Recursion;

public class _04_HanoiTower { 
   
    public static void main(String[] args) { 
   
        _05_Tower tower = new _05_Tower();
        tower.move(5,'A','B','C');
    }
}
package Recursion;

public class _05_Tower { 
   
    // num 表示要移动的个数, a,b,c 分别表示A塔, B塔,C塔
    public void move(int num, char a, char b, char c) { 
   
        //如果只有一个盘 num = 1
        if (num == 1) { 
   
            System.out.println(a + "->" + c);
        }else{ 
   
            //如果有多个盘,可以看成两个,最下面的和上面的所有盘
            //(1)先移动上面所有的盘到 b,借助 c
            move(num - 1, a, c, b);
            //(2)把最下面的的这个盘,移动到 c
            System.out.println(a + "->" + c);
            //(3)再把 b塔的所有盘,移动到c , 借助a
            move(num - 1, b, a, c);
        }
    }
}

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

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

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


相关推荐

  • 一个概括性关于维数约简的论文[通俗易懂]

    一个概括性关于维数约简的论文[通俗易懂]
    http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.1327&rep=rep1&type=pdf

    2022年6月1日
    26
  • 使用多重循环打印平行四边形「建议收藏」

    packagecom.qfedu.test1;/*** 使用多重循环打印平行四边形* 当我们打印三角形的时候:* 1.观察第一行符号的个数,第一行符号的个数决定了循环计数器的初始值* 2.观察形状符号的个数是越来越多的话就++越来越少就–* 3.当计数器变化为++的时候判断条件一定要小于或者小于等于某个值相当于设定一个上限* 4.当计数器变化为–的时候判断条件一定要大于或者大于等于某个值相当于设定一个下限*/publicclassT

    2022年4月7日
    75
  • Maven pom.xml

    Maven pom.xml

    2021年8月29日
    46
  • ftp扫描软件下载_ftp扫描文件夹连接失败

    ftp扫描软件下载_ftp扫描文件夹连接失败不知道大家用过哪几种ftp扫描工具,是不是感觉都是大同小异的呢?其实市面上的ftp扫描工具功能都是差不多的,当然也还是有一点差别的,那一点的差别可能就是我们选择那一种ftp扫描工具的原因。不论怎么说,也都是要选择自己喜欢的ftp扫描工具来使用。第一款:IIS7服务器管理工具这款工具里面的ftp扫描工具体验感是比较好的,除了一般ftp扫描工具里面都有的批量管理,它还有很多自己设计的功能。可以说这就是它成功的关键。它还能够进行定时上传下载、定时备份和多任务同时进行。哦对,它还有自动更新的功能。IIS7服务

    2022年10月1日
    2
  • C++静态成员变量初始化和赋值

    C++静态成员变量初始化和赋值1 背景有这样一套会话机制 CSession 为会话对象 CSessionMana 为会话管理类 在 CSession 会话需要销毁时 CSession 主动发送消息给 CSessionMana 销毁 session 同时 CSession 是一个基类 子类通过继承 CSession 实现不同的 session 处理 实现主要考虑三个方面 创建 处理 销毁 通过不同的 server 创建不同的 session

    2025年9月3日
    5
  • Struts2漏洞分析「建议收藏」

    Struts2漏洞分析「建议收藏」当在浏览器输入如下地址时:      http://www.xxxx.com/aaa.action?(‘\u0023_memberAccess[\’allowStaticMethodAccess\’]’)(meh)=true&(aaa)((‘\u0023context[\’xwork.MethodAccessor.denyMethodExecution\’]\u003d\u0023foo’)

    2022年7月19日
    20

发表回复

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

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