1. public class HNT {
  2. public static void main(String[] args) {
  3. HNT a1 = new HNT();
  4. a1.lToR(10); //给汉诺塔a1左边放10阶的层数,把左边的10阶移动至右边。
  5. }
  6. private boolean pHToM(int num,String a,String b,String c) { //打印移动数据,从a移动到c.
  7. if (num == 1) { //只移动一层的情况,return false表示,如果num == 1则不再继续打印num<1的情况
  8. System.out.printf("%s to %s\n",a,c);
  9. return false;
  10. }
  11. else if (num == 2) { //只移动两层的情况,return false表示,如果num == 2则不再继续打印num<2的情况
  12. System.out.printf("%s to %s\n",a,b);
  13. System.out.printf("%s to %s\n",a,c);
  14. System.out.printf("%s to %s\n",b,c);
  15. return false;
  16. }
  17. else { //
  18. return true; //移动大于两层的情况,return true表示,如果num>2则继续循环到num<=2为止
  19. }
  20. }
  21. public void lToR(int num) { //把num层的汉诺塔从左移动至右
  22. if(pHToM(num,"left","mid","right")) {
  23. lToM(num - 1);
  24. lToR(1);
  25. mToR(num - 1);
  26. }
  27. }
  28. public void lToM(int num) { //把num层的汉诺塔从左移动至中
  29. if(pHToM(num,"left","right","mid")) {
  30. lToR(num - 1);
  31. lToM(1);
  32. rToM(num - 1);
  33. }
  34. }
  35. public void mToL(int num) { //把num层的汉诺塔从中移动至左
  36. if(pHToM(num,"mid","right","left")) {
  37. mToR(num - 1);
  38. mToL(1);
  39. rToL(num - 1);
  40. }
  41. }
  42. public void mToR(int num) { //把num层的汉诺塔从中移动至右
  43. if(pHToM(num,"mid","left","right")) {
  44. mToL(num - 1);
  45. mToR(1);
  46. lToR(num - 1);
  47. }
  48. }
  49. public void rToL(int num) { //把num层的汉诺塔从右移动至左
  50. if(pHToM(num,"right","mid","left")) {
  51. rToM(num - 1);
  52. rToL(1);
  53. mToL(num - 1);
  54. }
  55. }
  56. public void rToM(int num) { //把num层的汉诺塔从右移动至中
  57. if(pHToM(num,"right","left","mid")){
  58. rToL(num - 1);
  59. rToM(1);
  60. lToM(num - 1);
  61. }
  62. }
  63. }

Java实现汉诺塔移动,只需传一个int值(汉诺塔的阶)的更多相关文章

  1. Java源码中的发现:快速判断一个int值是几位数

    判断一个int值是几位数,要是我自己实现,估计又会想到除法和模运算了,偶然在java标准API源码中发现的写法,很强大. public class Test { final static int[] ...

  2. RecyclerView.Adapter封装,最简单实用的BaseRecyclerViewAdapter;只需重写一个方法,设置数据链式调用;

    之前对ListView的BaseAdapter进行过封装,只需重写一个getView方法: 现在慢慢的RecyclerView成为主流,下面是RecyclerView.Adapter的封装: Base ...

  3. Java泛型详解,通俗易懂只需5分钟

    转载出处:http://www.weixueyuan.net/view/6321.html 我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值. 假如我 ...

  4. mybatia的mypper.xml文件,参数类型为map,map里有一个键值对的值为数组,如何解析,例子可供参考,接上文,发现更简便的方法,不必传数组,只需传字符串用逗号隔开即可

    是这样的 先看参数 map.put("orgId", "1818"); map.put("childDeps", "1000,10 ...

  5. 利用 TypeConverter,转换字符串和各种类型只需写一个函数

    本文代码基于 .NET Framework 实现. 本来只想进行简单的配置存储的,不料发现 .NET 的基本类型多达十多种.于是,如果写成下面这样,那代码可就太多了哦: // 注:`Configura ...

  6. java开发区块链只需150行代码

    本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统. ...

  7. 【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!

    原文:[百度地图API]发布静态图API啦!只需一个网址,即可展示定制百度地图! 摘要: 百度地图静态图API!您无须执行任何“特殊”操作便可在网页上显示此图片. 不需要 JavaScript.我们只 ...

  8. Java进阶知识点1:白捡的扩展性 - 枚举值也是对象

    一.背景 枚举经常被大家用来储存一组有限个数的候选常量.比如下面定义了一组常见数据库类型: public enum DatabaseType { MYSQL, ORACLE, SQLSERVER } ...

  9. Java中传参的值传递和引用传递问题(转)

    今天遇到了一个java程序,需要用参数来返回值(虽然最后用另一种方法实现了),在网上看到这样一篇文章,很受启发. 本文章来自于http://hi.baidu.com/xzhilie/blog/item ...

随机推荐

  1. 模块讲解---numpymo模块,matplotlib模块,pandas模块

    目录 numpy模块 matplotlib模块 pandas模块 numpy模块 numpy模块:用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学运算 在使用的时候,使用方法与其他的模 ...

  2. Java8-LongAccumulator

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...

  3. vs 2017 无法安装任何 nuget package,提示“库没有注册。。。”

    vs 2017 无法安装任何 nuget package,提示“库没有注册(异常来自 HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))” 各种百度谷歌都没有 ...

  4. 005_linuxC++之_指针的引入

    (一)直接看代码 #include <iostream> using namespace std; int add(int a){ a = a + ; return a; } int ad ...

  5. 五十七.分布式ELK平台、ES安装 、 扩展插件 、Kibana安装

    1. ES集群安装 准备1台虚拟机 部署elasticsearch第一个节点 访问9200端口查看是否安装成功   1ELK是日志分析平台,不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写 ...

  6. 参数类型 (Mapper.java)常用

    UserBaseInfo selectByMobile(@Param("mobile")String mobile,@Param("isDeleted")Int ...

  7. os/exec

    用go来执行命令 cmd := exec.Command(命令,参数1,参数2....) out, _ := cmd.Output() data := string(out) Output得到的是正常 ...

  8. 1628:X-factor Chain

    1628:X-factor Chain 时间限制: 1000 ms         内存限制: 524288 KB提交数: 122     通过数: 68 [题目描述] 原题来自 POJ 3421 输 ...

  9. Kafaka详细介绍机制原理

    1.       kafka介绍 1.1.       主要功能 根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能: 1:It lets you publish and ...

  10. 安装fastFDS

    fastdfs源码包.libfastcommon源码包.nginx模块,我存放源码包于 /usr/local/src wget https://github.com/happyfish100/fast ...