java三个柱子汉诺塔问题
题目
移动盘子,每一次只能移动一个,小盘子在大盘子上。
打印1 from A to B过程
注意
1)盘子编号的变化和辅助柱子的变化
2)当盘子编号为1时,结束递归,此时移动结束
代码
package p2;/*** Illustration** @author DengQing* @version 1.0* @datetime 2022/5/7 16:01* @function 汉诺塔问题:把盘子从A移动到B【A B C】* 移动盘子,每一次只能移动一个,小盘子在大盘子上。* 打印1 from A to B过程*/
public class problem8 {public static void main(String[] args) {move(3, "A", "B", "C");}/*** n:初始的n个盘子,n为最大编号* from:原始柱子* to:目标柱子* help:辅助柱子*/public static void move(int n, String from, String to, String help) {//当移动1号盘子时,递归结束if (n == 1) {System.out.println("盘子" + n + "从" + from + "移动到" + to);return;}/*盘子1从A移动到B盘子2从A移动到C盘子1从B移动到C盘子3从A移动到B盘子1从C移动到A盘子2从C移动到B盘子1从A移动到B*///先把1~n-1个盘子移动到辅助空间上move(n - 1, from, help, to);//n号盘子可以到达目标柱子System.out.println("盘子" + n + "从" + from + "移动到" + to);//再把1~n-1个盘子从辅助空间移动到目标柱子上去move(n - 1, help, to, from);}
}
java三个柱子汉诺塔问题相关推荐
- Java算法一:汉诺塔
Java算法一:汉诺塔(河内塔Towers of Hanoi) 问题说明: 汉诺塔:又称河內塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河內为 ...
- 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏
2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...
- Java递归基础案例-汉诺塔
汉诺塔问题 /** * Title: 汉诺塔问题 * Description:古代有一个梵塔,塔内有三个座A.B.C,A座上有64个盘子,盘子大小不等,大的在下,小的在上. * 有一个和尚想把这64个 ...
- 用java写了一个汉诺塔
package com.brzhang;/*** 汉诺塔* 开始盘子全部都放在第一根柱子上* 目的:将第一根柱子上的盘子全部移动到第三根柱子上,规则是不能编号较大的盘子放在编号交小的盘子上面.**/ ...
- Java 通过递归求解汉诺塔问题 源码 经典递归问题讲解
汉诺塔问题描述:有三根柱子 A.B.C ,在A从下向上按照从大到小的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上.移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子. 分析:为 ...
- 大学常见算法的java实现及思考-汉诺塔问题
大家好,本人是2010级计算机学院学生一枚.今年暑假希望同大家一起对大学所有讲过的算法进行一次细致的回顾.在此我会把回顾的点点滴滴记下,希望对大家有些帮助.本人也是菜鸟一枚,如在表述中有不对的希望大家 ...
- 四柱子汉诺塔c语言程序代码,汉诺塔n=4(4个盘)c语言递归编程代码
满意答案 /**************************** 汉诺塔的算法就3个步骤: 第一,把a上的n-1个盘通过c移动到b. 第二,把a上的最下面的盘移到c.a成了空的. 第三,因为n-1 ...
- hannoi塔java程序_基于Java实现的Hannoi汉诺塔自动演示程序
1 设计要求 设计GUI界面的Hannoi塔.汉诺塔中有三个座,名字分别为A,B,C.初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上.用户可以用鼠标选中盘子,然 ...
- java利用递归解决汉诺塔问题
public class test_Hanoi {public static void main(String[] args) {hanoi(3, 'A', 'B', 'C');}/*n 共有n个盘子 ...
最新文章
- 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
- python计算最大公约数和最小公倍数_python怎么求最大公约数和最小公倍数
- c++中stack容器
- cad2008加载 et拓展工具_生物信息工具 | 如何为网络图添加漂亮的图例?
- c# winform 打印 窗体 及 窗体控件内容 的 初级尝试
- 50. Pow(x, n) (MATH)
- 微信js-sdk+JAVA实现分享接口
- javascript书签工具
- 科目二倒车入库学车技巧_学车必看_保过。
- pytorch实现 vision_transformer
- 解决mmdetection训练过程loss为nan的问题
- dolphinschedule2.0.5升级dolphinschedule3.1.1
- ARM最强CPU/GPU来了!A75、G72首发:性能爆炸
- php background,background什么意思
- 自动驾驶的前世今生,能否直破未来潮流
- 如何利用开放平台把金数据采集的表单数据生成纷享销客销售线索?
- C++ XXTEA加密解密算法
- HTML和CSS做优惠券效果
- Iterator遍历
- 飞机失事,软件“背锅”?软件测试对机载软件有多重要?