汉罗塔递归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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UPX脱壳逐一跟踪分析

    UPX脱壳逐一跟踪分析UPX脱壳逐一跟踪分析写在前面OD跟踪命令先结合PE知识分析分析“新年快乐.exe”写在前面之前看到的UPX脱壳文章都只是教了方法,对UPX的原理少有提及。看了《逆核》的UPX脱壳一章后,俺尝试把UPX脱壳与PE文件结构的知识结合起来整理了一些(也可联系压缩器Paker的知识)。分析样本来自BUUCTF:Reverse题目“新年快乐”(本文将寻找样本的OEP)OD跟踪命令可能会用到的几个跟踪命令:命令快捷键作用AnimateIntoCtrl+F7反复执行StepIn

    2022年7月12日
    17
  • 通过Nginx日志–检测异常访问ip进行封禁

    通过Nginx日志–检测异常访问ip进行封禁

    2021年6月4日
    135
  • python写学生信息管理系统代码_学生管理系统源码

    python写学生信息管理系统代码_学生管理系统源码一、前言相信很多小伙伴在学校期间都会被要求实现一个学生管理系统,很多是让用C语言实现,有的是要求Python。这里通过python实现了一个学生管理系统,考试/交作业必备!二、实现效果三、完整源码defindex():”””管理系统主页”””print(“*”*30)print(“Python学生管理系统\n\n1.添加学生的信息\n2.删除学生的信息\n3.修改学生的信息\n4.查询学生的信息\n5.查询所有学生的信息\n6.退出系统

    2022年9月15日
    0
  • Eclipse导入Github上的Robotium源码进行代码分析的步骤

    Eclipse导入Github上的Robotium源码进行代码分析的步骤这篇文章应该只是针对像我这样的初级Maven用户的,因为自己花了不少时间来解决这个问题,而网上很多文章描述的也是语焉不详,所以记录下来以便后来如我者可以借鉴一二。文中有几点细节我觉得需要注意的我会高亮出来。1.问题描述今天打算查看一下Robotum(其项目本身基于maven,因为我发现项目中有pom.xml文件)框架的源代码去了解其具体实现以加深理解,但下载后按照认知的方法去Import

    2022年7月25日
    9
  • iOS证书申请_安装证书

    iOS证书申请_安装证书苹果的证书繁锁复杂,制作管理相当麻烦,今天决定重置一个游戏项目中的所有证书,做了这么多次还是感觉很纠结,索性直接记录下来,日后你我他查阅都方便;关于证书苹果使用密文签名技术来验证App的合法性,不管是

    2022年8月2日
    7
  • python实现——ASCII谢尔宾斯基地毯

    python实现——ASCII谢尔宾斯基地毯目录一、题目内容:二、思路:三、python代码:4、总结一、题目内容:二、思路:看到这个图案,肯定是自相似的,所以肯定用递归解决这个问题。但是具体怎样的呢?(1)这个其实就是二维矩阵,所以是要判断每个位置是不是要填给定字符,如果确定了每个位置填或不填,那不就解决问题了嘛;(2)用两个for循环不就遍历了所有的位置了么,所以这个也简单,现在的难点在于如何知道每个位置要填,所以用一个函数判断;(3)这个判断的函数需要三个参数,一个是边长数,另外两个是坐标。边界条件是n=1就返回T.

    2022年7月13日
    15

发表回复

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

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