题目

移动盘子,每一次只能移动一个,小盘子在大盘子上。

打印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三个柱子汉诺塔问题相关推荐

  1. Java算法一:汉诺塔

    Java算法一:汉诺塔(河内塔Towers of Hanoi) 问题说明: 汉诺塔:又称河內塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河內为 ...

  2. 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏

    2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...

  3. Java递归基础案例-汉诺塔

    汉诺塔问题 /** * Title: 汉诺塔问题 * Description:古代有一个梵塔,塔内有三个座A.B.C,A座上有64个盘子,盘子大小不等,大的在下,小的在上. * 有一个和尚想把这64个 ...

  4. 用java写了一个汉诺塔

    package com.brzhang;/*** 汉诺塔* 开始盘子全部都放在第一根柱子上* 目的:将第一根柱子上的盘子全部移动到第三根柱子上,规则是不能编号较大的盘子放在编号交小的盘子上面.**/ ...

  5. Java 通过递归求解汉诺塔问题 源码 经典递归问题讲解

    汉诺塔问题描述:有三根柱子 A.B.C ,在A从下向上按照从大到小的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上.移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子. 分析:为 ...

  6. 大学常见算法的java实现及思考-汉诺塔问题

    大家好,本人是2010级计算机学院学生一枚.今年暑假希望同大家一起对大学所有讲过的算法进行一次细致的回顾.在此我会把回顾的点点滴滴记下,希望对大家有些帮助.本人也是菜鸟一枚,如在表述中有不对的希望大家 ...

  7. 四柱子汉诺塔c语言程序代码,汉诺塔n=4(4个盘)c语言递归编程代码

    满意答案 /**************************** 汉诺塔的算法就3个步骤: 第一,把a上的n-1个盘通过c移动到b. 第二,把a上的最下面的盘移到c.a成了空的. 第三,因为n-1 ...

  8. hannoi塔java程序_基于Java实现的Hannoi汉诺塔自动演示程序

    1 设计要求 设计GUI界面的Hannoi塔.汉诺塔中有三个座,名字分别为A,B,C.初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上.用户可以用鼠标选中盘子,然 ...

  9. java利用递归解决汉诺塔问题

    public class test_Hanoi {public static void main(String[] args) {hanoi(3, 'A', 'B', 'C');}/*n 共有n个盘子 ...

最新文章

  1. NA-NP-IE系列实验30:CHAP 认证
  2. android studio查看android source code
  3. JS定时器使用,定时定点,固定时刻,循环执行
  4. SQLServer XML操作
  5. 【OS学习笔记】二十八 保护模式八:任务切换对应的汇编代码之内核代码
  6. 每日一题(3)—— -2与2的比较(二)
  7. 程序员专属精美简历合集—第二弹
  8. 通过bash脚本分析zabbix数据库,实现服务器每日故障统计
  9. c++之使用std::sort对坐标进行排序
  10. 语音识别如何操作?这种语音转文字方法也太好用了吧,简单高效
  11. sharepoint 在Visual Studio设置其他页面的加载标签
  12. java证书不见了_java – 找不到证书链
  13. 2020最新软件测试学习资料,全套源码无加密网盘下载
  14. 【学习与理解】:CTPN算法
  15. Spark代码2之Transformation:union,distinct,join
  16. 美国弗吉尼亚大学计算机科学,美国弗吉尼亚大学计算机科学专业
  17. MongoDB笔记之简单的增删改查
  18. opencv--轮廓拟合函数 boundingRect(),minAreaRect(),minEnclosingCircle(),fitEllipse(),fitLine()
  19. 表格的计算机在哪个文件夹,如何查看当前打开的Excel表格文件在电脑中的保存位置...
  20. 云计算技术 — 分布式云

热门文章

  1. 树莓派linux网络编程,树莓派(Raspberry Pi)接太阳板和移动电源
  2. SQL注入原理以及预防措施
  3. SQL注入原理及过程简单介绍
  4. Ubuntu 18.04 中TXT中文显示乱码的解决办法
  5. python3的fft_使用python进行FFT变换
  6. 繁琐冗长_“ Go比Java冗长得多”
  7. idea 忽略显示文件
  8. sortBy(逆序排序)的使用
  9. sum() over() 函数用于累加计算
  10. C++ 工程实践(7):iostream 的用途与局限