汉诺塔的规则是:一共三根柱子,一根柱子从上到下套着有小到大的若干个圆盘,要将所有圆盘按照这个排放顺序移动到第三根柱子上,并且每次只能移动一个圆盘.

可以将整个过程分为三个步骤来看:

第一步:将除最大圆盘外的n-1个圆盘移动辅助柱子上

第二步:将最大的圆盘移动到目标柱子

第三步:将n-1个圆盘从辅助柱子移动到目标柱子

其中第一步又可以拆成一模一样的三步,可以看成一个n-1层的塔要移动到目标柱子,只不过目标柱子换了一个:

第三步也可以拆分成一模一样的三步:

多拆几次就会发现规律:第一步和第三步无论如何拆成更小的汉诺塔,都只是目标柱和辅助柱发生调换,其他部分都是一模一样.所以我们将第一步和第三步进行递归运算就可以解决汉诺塔问题.

static void hanNuo(int n,String A,String B,String C){if (n==1){System.out.println("把第"+n+"个从"+A+"移动到"+C);}else {hanNuo(n-1,A,C,B);System.out.println("把第"+n+"个从"+A+"移动到"+C);hanNuo(n-1,B,A,C);}}

每进入一次递归塔的层数减一 ,由于第一步和第三步每拆分一次目标塔和辅助塔就会互换,同理,每进入一次递归也会将两个塔互换,因为第一步拆分目标塔是在塔二和塔三之间循环,所以我们在进入递归时也将传入代表"塔二"和"塔三"的参数互换,同理第三步也将互换代表"塔一"和"塔二"的参数.

方法中的第二步由于第一步已经递归完成,所以可以直接使用打印语句进行输出.

java递归实现汉诺塔相关推荐

  1. Java 递归实现汉诺塔问题

    汉诺塔问题就是:有ABC三根柱子,A柱子上从上到下摞了很多体积依次递增的圆盘,如果将圆盘从A移动到C柱子,且依然保持从上到下依次递增. class Hanio{public void moveOne( ...

  2. 用java语言实现汉诺塔问题 (Java经典编程案例)

    用递归实现汉诺塔问题,代码如下: import java.util.Scanner;/*** 汉诺塔问题*/ public class Example {public static void move ...

  3. Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏

    Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 目录 输出结果 核心代码 输出结果 核心代码 def hanoi(n,x,y,z):if n==1:print(x,'--→',z) ...

  4. Python递归实现汉诺塔

    Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1):print(x,'--->',z)else:f3(n-1,x,z,y)print(x,'--->',z)f ...

  5. Java案例:汉诺塔问题

    Java案例:汉诺塔问题 游戏规则: (1)一次只能移动一个环 (2)小环必须在大环之上 (3)所有环从A柱移到C柱

  6. c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑

    c语言递归解决汉诺塔参数变化的疑惑 答案:3  信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...

  7. c语言递归解决汉诺塔问题

    c语言递归解决汉诺塔问题 参考文章: (1)c语言递归解决汉诺塔问题 (2)https://www.cnblogs.com/didiaoxiaoguai/p/6686407.html 备忘一下.

  8. c语言 统计数量用count_C语言编程学习之递归实现汉诺塔图解!还有零基础入门视频~...

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  9. C语言——生存期和存储类型、递归、递归求解汉诺塔、快速排序

    目录 一.生存期和存储类型 1.生存期 2.存储类型 3.自动变量(auto) 4.寄存器变量(register) 5.静态局部变量(static) 6.static 和 extern 二.递归 1. ...

最新文章

  1. vs2008断点上出现感叹号解决办法
  2. python学精通要多久-零基础零经验自学Python,到精通Python要多久啊?
  3. 解析“60k”大佬的19道C#面试题(上)
  4. 每日一笑 | 周一,如何才能保持清醒?
  5. 蓝桥杯2016初赛-网友年龄-枚举
  6. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)
  7. 【今日CV 视觉论文速览】22 Nov 2018
  8. TortoiseGit bonobo gitserver记住帐号密码
  9. Ensemble Learning
  10. Angular企业级开发(3)-Angular MVC实现
  11. 4.16-4.22课题(拼团系统)进度汇报
  12. my new start
  13. Spring常见面试题总结(超详细回答)
  14. 大神论坛 史上最全植物大战僵尸分析及游戏辅助Python实现
  15. 运维派网站数据迁移过程踩到的坑和教训
  16. The type 类名 is already defined
  17. 获取注册表信息-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography的MachineGuid的值
  18. [RHEL 4U4] 最小安装后安装Apache(RPM)
  19. Excel 多列条件查找
  20. 入职两年申请涨薪3K被拒,是我平时好脸给多了?转身立马裸辞走人...

热门文章

  1. uni-app如何生成海报图片
  2. iOS-Core Bluetooth Background Processing for iOS Apps(API Reference) the fifth part
  3. 位置式 PID 算法、恩智浦杯智能车电机PID
  4. 史上最全!全领域网络安全拓扑图(118页)
  5. Android反射调用goToSleep
  6. Git 分支管理-创建与合并
  7. 【SwiftUI模块】0013、SwiftUI搭建-类似蚂蚁财富的基金累计盈亏的走势图
  8. hive以5分钟间隔处理数据
  9. XGB建模流程化代码—仅作学习笔记
  10. 《深度学习入门一》一入侯门深似海,深度学习深几许 2017-06-09 云栖社区 摘要: 当你和女朋友在路边手拉手一起约会的时候,你可曾想,你们之间早已碰撞出了一种神秘的智慧–深度学习。恋爱容易,相