汉诺塔java程序_Java编写一个汉诺塔的过程

[java]代码库/*

* 需求:用Java编写一个汉诺塔的过程

* 汉若塔问题,就是把A柱子上面从大到小一次叠放的盘子借助B柱移到C柱上去,规则是一次只能移动一个盘子,大盘子不能放到小盘子之上

*

* 思想:采用递归的方法来接

* 1. 先将A上面的n-1个盘子,移到B柱上

* 2. 然后把A上最大的一个盘子放到C上去

* 3. 然后把B上面的n-1个盘子移到A上去

*

* 步骤:

* 汉若塔用递归思考首先考虑一种临界状态,把n-1个上面的盘从A—B, 就是把n从A移动到C,最后把n-1个盘从B---C,

* (注意在考虑把n-1个盘从B---C的时候就出现递归调用,如果把A,B盘交换就又重复上面的流程了,最后到n = 1的时候就返回)

*

* 伪代码:

* public void run(int n, char a, char b, char c)

{

if(n==1)

{

move(n,a,c) //等于1的时候把盘从A移动到C

}else

{

run(n-1,a,b,c);//递归调用把a上面的n-1个盘移动到B上,怎么表示移动?把柱子交换不就是移动了。

move(n,a,c);

run(n-1,b,a,c);//意图是把n-1个盘从B移动到A上。

}

}

*

*/

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) {

// TODO Auto-generated method stub

int nDisks = 3;

moveDish(nDisks,'A','B','C');

}

}

//源代码片段来自云代码http://yuncode.net

694748ed64b9390909c0d88230893790.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ajax 同步_第3部分-0:同步和异步,还有回调需要了解一下

同步是什么异步是什么 异步场景: (1)定时任务 (2)网络请求:Ajax 、图片加载 全面分析前端的网络请求方式 (3)事件绑定 异步产生知识点: 进程和线程 单线程 记一次 Vue 移…

音频重采样有什么用_最佳音频接口基本购买指南

音频接口是计算机实现录音功能的媒介设备,用于将乐器和麦克风发出的声音转换为数字信息,以便计算机可以理解并存储在硬盘上。在播放音频时,接口将数字音频文件重新转换为模拟信号,然后用监听音箱或耳机播放出来。简而言之&#xf…

java dom xpath_Java:在org.w3c.dom文档中获取元素的xpath

我写了我想要达到的目标.但是,getElementIdx()函数不会返回正确的计数. getPrevIoUsSibling()存在问题,但我不知道为什么.public static String getElementXpath(DOMElement elt){String path "";try{for (; elt ! null; elt (DOMElement) elt.getParentNode()){in…

java 正则 最后一个字符_正则表达式怎么匹配字符串中最后一串数字?

展开全部importretempDwellTime:666mre.search(r\d*,temp)printrepr(m.group()),m.start(),m.end()mre.search(r\d,temp)printrepr(m.group()),m.start(),m.end()printre.findall(r\d*,temp)输出:006661114[,,,,,,,,,,,666,]扩展资料正则表达式,校验数字…

lombok原理_听说学会用 Lombok 就可以让你早点下班?(你还不看)

听说隔壁用 Lombok 的六点就下班了,我也想六点下班!好的,那么这篇文章就介绍下什么是 Lombok,Lombok 做了什么以及 Lombok 是怎么做的?在介绍之前,先通过是否使用 Lombok 的效果来看下对比,首先…

某剧院有33排座位java_2018湖南省考行测数学题“拍档”:等差数列和等比数列...

随着八月份的到来,同学们的暑假也接近尾声,开学之后,就有一部分同学马上就要面临就业的压力,对于应届毕业生来生,参加公务员考试不失为一种好的选择,而在银行秋招中,数量关系也是考试内容之一&a…

python最大分词_中文分词算法之最大正向匹配算法(Python版)

最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的。 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配。 首先我们可以规定一个词的最大长度,每次扫描的时候寻找当前…

idea jar包导入_IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)

下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto ImportAuto Import的功能是可以帮助我们自动删除无用的包Import(未被引用),以及自动Import填充尚未导入的包。完全智能化地帮助我们在开发程序时,省略了导包的操作&#xff0c…

scanner java重新输入_如何使用Scanner Java重复读取用户输入

我正在尝试为我的程序创建一个简单的菜单来读取用户输入.这是代码:public void menu() {String command;System.out.println("To operate with words write: a");System.out.println("To operate with products write: b");System.out.print(&q…

@value 数组_为什么不推荐用for...in遍历数组

(一)for...in引发的一个报错两年前写的一个文章目录生成插件vue-outline,一直用着没出啥问题(本站的文章目录也是用该插件生成的)。但是最近一个网友在使用的时候却出现了异常报错,异常代码使用了一个for..…

mysql 插入字符串_mysql插入数据字符错误

Incorrect string value: \xF0\x9F... for column XXX at row 1这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。我的解决方案是这样的[mysqld]…

python启动方法_python进程开启的两种方式

一、进程 1.1、方式一 from multiprocessing import Process import time #方式一 def task(name): print(f"my name is {name},启动时间") time.sleep(2) print(f"my name is {name},停止时间") if __name__ __main__: # 1 创建一个对象 p Process(targ…

mysql存储函数 cursor_MySQL的存储过程写法和“Cursor”的使用

MySQL的存储过程写法和“Cursor”的使用2008-03-11eNet&Ciweek本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用,示例如下:CREATE PROCEDURE justifyGroupNum()NOT DETERMINISTICSQL SECURITY DEFINERCOMMENT BEGIN/*how to run:ca…

python网页开发好用吗_推荐用于Web开发的最好 Python 框架

Python 是一门动态、面向对象语言。其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性。除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还自带服务器。其它方面,Python拥有足够…

mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离

摘要:这篇MySQL栏目下的“详解如何利用amoeba(变形虫)实现mysql数据库读写分离”,介绍的技术点是“MySQL数据库、数据库读写分离、amoeba、MySQL、读写分离、数据库”,希望对大家开发技术学习和问题解决有帮助。关于mysql的读写分离架构有很多…

python位运算符_NumPy按位运算符解析和实例详解

本文概述 Numpy提供以下按位运算符。 SN Operator Description 1 bitwise_and 它用于计算相应数组元素之间的按位运算。 2 bitwise_or 它用于计算相应数组元素之间的按位运算。 3 invert 它用于计算按位而不是数组元素的运算。 4 left_shift 它用于将元素的二进制表示形式的位向…

bind blz mysql_MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典...

MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典本资源由JAD资源网收集整理丨www.jiuandun.com资源简介MySQ DBAL重点剖析课程,课程的重点在于企业级MySQL系统安全实战,和MySQL DBA运维的日常事务管理,也就…

怎样解决外键约束_《设计心理学》|找寻“设计师”所遇的真正问题与解决之道...

《设计心理学1》作者[美] 唐纳德A诺曼 。此书始终强调以人为本的设计哲学,将认知心理学和行为学等多学科的方法导入到设计之中。不仅着重于反思设计过程中出现的问题给用户带来的困扰,更着重于解决问题,用这些基本原则帮助设计师找到真正的问…

java dumpheap_java程序性能分析之thread dump和heap dump

一.dump基本概念在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题。这些文件记录了JVM运行期间的内存占用、线程执行等情况,这就是我们常说的dump文件。常用的有heap dump和thread dump(也叫javacore&#xf…

python缩进格式错误的是_19个常见的python错误和异常

19个常见的python错误和异常 错误总是不可避免,尤其是在初学阶段,本文收集整理了1个常见的python错误 1. 忘记添加: 在if, elif, else, for, while, class,或者使用def定义函数的名称后面忘记添加:,就会引发 SyntaxError if 3 >…