三阶汉诺塔java源代码_如何使用Java实现汉诺塔问题求解
如何使用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实现汉诺塔问题求解相关推荐
- 教学管理系统java源代码_教学管理系统java源代码.doc
教学管理系统java源代码 教学管理系统java源代码 篇一:java学生管理系统源代码 import java.io.Serializable; public class Course implem ...
- 解析java源代码_一步步解析java执行内幕
对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式.在本篇文章中,将重点研究java源代码的执行原理,即从程 序员编写JAVA源代码,到最终形成产品,在整个过 ...
- 心java源代码_写了一个心形图案的java源代码,想发给朋友,朋友怎样才能像打开文档一样方便查看呢?...
搞清楚java的运行机制你就明白了该怎么办 java源代码->java编译器生成字节码文件->java虚拟机执行字节码文件->心形图案显示 因此你要让朋友直接运行,你就要让上述过程自 ...
- 网上花店java项目_网上花店Java源代码
[实例简介] 网上花店Java源代码,实现购物车.数量增减.分页等功能,必须用到oracle数据库,用myeclipse做的,希望对大家有用! [实例截图] [核心代码] 网上花店 └── 网上花店 ...
- 数据库管理系统设计Java源代码_《数据库应用》课程设计人事管理系统(java源代码)...
<数据库应用>课程设计人事管理系统(java源代码) <数据库应用>课程设计人事管理系统(java源代码) <数据库应用>课程设计--人事管理系统(java源代码) ...
- 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数: 2. 通过code参数加上AppID和AppSecret等,通过 ...
- java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上
首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...
- jcreator把class字节码文件转成.java源文件_如何将.JAVA文件编译成.CLASS文件.说明方法和工具,或用JCreator如何操作?...
http://www.newiter.com/showart.asp?id=33 由于比较长,建议点击上面链接进入继续浏览 对于很多应用系统,常常需要动态装载和执行类和代码片断,这有利于部署的简易性和 ...
- groovy 使用java类_深入学习java中的Groovy 和 Scala 类
前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...
最新文章
- 机器学习 对不平衡数据的四种处理方法
- 大批量执行webservice出现“无法连接远程服务器”解决方案
- 机器学习笔记(part1)--Frobenius范数与迹运算
- bootstrap-代码-内联代码
- Spring Annotation知识梳理
- Unreal Engine 4 基于网格的水面模拟实现
- 設置Linux保留物理內存並使用 (1)
- mplayer命令行模式下的使用方法
- js如何判断字符串是否为空
- 响应式开发(六)-----Bootstrap CSS----------Bootstrap文本排版
- 关于Windows7系统不能访问XP创建的DVD的问题
- 计算机应用基础模拟三答案,《计算机应用基础》模拟试卷三(含答案)
- 深度学习制作自己的样本
- FairyGUI按钮动效的混用
- linux qt 背景图片,《转》qt中添加背景图片(stylesheet)
- 黄子韬被封“剧组开心果”:《艳势番》是人生精彩回忆
- QQ是如何实现好友桌面快捷方式的?
- 开天机型系统镜像及软件资源网盘链接
- JS中 function 和 Function 的区别
- 英语单词分类(待补充)
热门文章
- win10多合一原版系统_手把手教你制作官方原版的WIN10系统安装盘
- setInterval定时连接后台防止session失效
- 云服务器选ssd还是hdd_SSD和普通硬盘对比?SSD到底好不好?看超变态测试
- vue ---- 生命周期
- vue ---- vue 的入门程序
- java poi设置单元格格式为数值_Excel 文本转数值的方法——我找的好苦啊
- python文件路径改了需要重新配置环境吗_Django 设置多环境配置文件载入问题
- mysql binlog备份_MySQL mysqldump + mysqlbinlog 备份和还原
- Python模块(二)(序列化)
- spark笔记之RDD常用的算子操作