如何使用Java实现汉诺塔问题求解

时间:2017-09-28     来源:华清远见JAVA学院

汉诺塔问题是一个经典的问题,常常被用来测试对递归算法的理解程度,今天华清Java学院小编就和大家分享下如何使用Java实现汉诺塔问题求解。

什么是汉诺塔问题?

汉诺塔问题的描述如下:有3根柱子A、B和C,在A上从上往下按照从小到大的顺序放着一些圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子。

使用Java实现汉诺塔问题的具体思路

编程实现3阶汉诺塔的求解步骤思路如下:

要实现3阶汉诺塔的求解步骤,也就是说初始状态时,A上从上到下有三个盘子,分别为1号盘、2号盘和3号盘,其中1号盘小,3号盘大;

判断剩余盘子个数,如果只有一个盘子就退出迭代,如果有大于一个盘子就继续迭代。

Java实现汉诺塔问题求解的具体代码

public class HanoiTower {

public static void moveDish(int level, char from, char inter, char to) {

if (level == 1) {// 如果只有一个盘子就退出迭代

System.out.println("从 " + from + " 移动盘子 1 号到 " + to);

} else {// 如果有大于一个盘子就继续迭代

moveDish(level - 1, from, to, inter);

System.out.println("从 " + from + " 移动盘子 " + level + " 号到 " + to);

moveDish(level - 1, inter, from, to);

}}

public static void main(String[] args) {

int nDisks = 3;// 设置汉诺塔为3阶

moveDish(nDisks, 'A', 'B', 'C');// 实现移动算法

}}

三阶汉诺塔java源代码_如何使用Java实现汉诺塔问题求解相关推荐

  1. 教学管理系统java源代码_教学管理系统java源代码.doc

    教学管理系统java源代码 教学管理系统java源代码 篇一:java学生管理系统源代码 import java.io.Serializable; public class Course implem ...

  2. 解析java源代码_一步步解析java执行内幕

    对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式.在本篇文章中,将重点研究java源代码的执行原理,即从程 序员编写JAVA源代码,到最终形成产品,在整个过 ...

  3. 心java源代码_写了一个心形图案的java源代码,想发给朋友,朋友怎样才能像打开文档一样方便查看呢?...

    搞清楚java的运行机制你就明白了该怎么办 java源代码->java编译器生成字节码文件->java虚拟机执行字节码文件->心形图案显示 因此你要让朋友直接运行,你就要让上述过程自 ...

  4. 网上花店java项目_网上花店Java源代码

    [实例简介] 网上花店Java源代码,实现购物车.数量增减.分页等功能,必须用到oracle数据库,用myeclipse做的,希望对大家有用! [实例截图] [核心代码] 网上花店 └── 网上花店 ...

  5. 数据库管理系统设计Java源代码_《数据库应用》课程设计人事管理系统(java源代码)...

    <数据库应用>课程设计人事管理系统(java源代码) <数据库应用>课程设计人事管理系统(java源代码) <数据库应用>课程设计--人事管理系统(java源代码) ...

  6. 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...

    1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数: 2. 通过code参数加上AppID和AppSecret等,通过 ...

  7. java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上

    首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...

  8. jcreator把class字节码文件转成.java源文件_如何将.JAVA文件编译成.CLASS文件.说明方法和工具,或用JCreator如何操作?...

    http://www.newiter.com/showart.asp?id=33 由于比较长,建议点击上面链接进入继续浏览 对于很多应用系统,常常需要动态装载和执行类和代码片断,这有利于部署的简易性和 ...

  9. groovy 使用java类_深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...

最新文章

  1. 机器学习 对不平衡数据的四种处理方法
  2. 大批量执行webservice出现“无法连接远程服务器”解决方案
  3. 机器学习笔记(part1)--Frobenius范数与迹运算
  4. bootstrap-代码-内联代码
  5. Spring Annotation知识梳理
  6. Unreal Engine 4 基于网格的水面模拟实现
  7. 設置Linux保留物理內存並使用 (1)
  8. mplayer命令行模式下的使用方法
  9. js如何判断字符串是否为空
  10. 响应式开发(六)-----Bootstrap CSS----------Bootstrap文本排版
  11. 关于Windows7系统不能访问XP创建的DVD的问题
  12. 计算机应用基础模拟三答案,《计算机应用基础》模拟试卷三(含答案)
  13. 深度学习制作自己的样本
  14. FairyGUI按钮动效的混用
  15. linux qt 背景图片,《转》qt中添加背景图片(stylesheet)
  16. 黄子韬被封“剧组开心果”:《艳势番》是人生精彩回忆
  17. QQ是如何实现好友桌面快捷方式的?
  18. 开天机型系统镜像及软件资源网盘链接
  19. JS中 function 和 Function 的区别
  20. 英语单词分类(待补充)

热门文章

  1. win10多合一原版系统_手把手教你制作官方原版的WIN10系统安装盘
  2. setInterval定时连接后台防止session失效
  3. 云服务器选ssd还是hdd_SSD和普通硬盘对比?SSD到底好不好?看超变态测试
  4. vue ---- 生命周期
  5. vue ---- vue 的入门程序
  6. java poi设置单元格格式为数值_Excel 文本转数值的方法——我找的好苦啊
  7. python文件路径改了需要重新配置环境吗_Django 设置多环境配置文件载入问题
  8. mysql binlog备份_MySQL mysqldump + mysqlbinlog 备份和还原
  9. Python模块(二)(序列化)
  10. spark笔记之RDD常用的算子操作