用什么语言解法都差不多,思路都是一样,递归,这其中只要注重于开始和结果的状态就可以了,对于中间过程,并不需要深究。(我细细思考了一下,还是算了。=_=)

代码其实很简单注重的是思路。

问题描述:有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在下,小的在上。把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。

简要概括一下,每次只能移动一个盘子,小盘子不能被大盘子压着,源座是A、目标座是C,过渡座是B。

嗯,问题很明确,下面开始分析。

我思考的过程是,先考虑一下最简单的情况,即只有一个盘子(n=1),一个盘子很好解决,A——>C即可;当盘子数(n)为不确定的个数的时候,这时候,我们写一个方法,将(n-1)个盘子按规则移动到B盘,那么A盘上剩下的必然是最大的盘子,A——>C直接移动到C盘即可;那么现在B盘上有(n-1)个盘子,为了让这n-1个盘子中的最大的那个盘子移动到C盘,我们写一个方法将(n-2)个盘子按规则移动到A盘,而B座上剩下(n-1)中最大的盘子,将这个盘子移动到C盘;此时A上面有(n-2)个盘子,我们写一个方法将(n-3)个盘子移动到C盘...

那么现在解法很明了了,后面不过是重复上诉步骤而已了,函数体没变,只是目标座和过渡座变化了而已。

没有必要去深究这中间的过程,如果从一开始去深究,n个盘子,每一个盘子的轨迹的话,那么只能是越陷越深,有时候也是要换一个角度去考虑问题。

废话不说了,直接上代码:

public class hanoi {

public static void main(String[] args){

hanoi h = new hanoi();

h.move(3, 'A', 'B', 'C');

}

public void move(int n,char a,char b,char c){

if(n == 1){

System.out.println("Disk "+n+" From "+a+" To "+c);

}else{

move(n - 1,a,c,b);

System.out.println("Disk "+(n)+" From "+a+" To "+c);

move(n - 1,b,a,c);

}

}

}

嗯,以上。

java hanoi_Hanoi问题java解法相关推荐

  1. LeetCode 319. Bulb Switcher--C++,java,python 1行解法--数学题

    LeetCode 319. Bulb Switcher–C++,java,python 1行解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有 ...

  2. java 设置dns_通过代码直接设置Java的DNS - Java Dns Cache Manipulator

    通过代码直接设置Java的DNS - Java Dns Cache Manipulator 通过代码直接设置Java的DNS(实际上设置的是DNS Cache),支持JDK 6+. 通过代码直接设置J ...

  3. java 读取txt,java读取大文件

    java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File; import java.io.RandomAccessFile; ...

  4. JAVA基础(JAVA 执行环境) 第一天

    JAVA程序有3中执行环境. (1)能够单独运行的程序,称为Java Application(Java应用程序). (2)在Internet浏览器中运行的程序,称为 Java Applet(JAVA小 ...

  5. java.utilDate和java.sql.Date

    java.utilDate和java.sql.Date由广州疯狂软件教育java培训分享: java程序中的时间类型有java.util.Date和java.sql.Date两种.两者之间的关系和转化 ...

  6. java 终极超类,Java问答:终极父类(3),java问答

    Java问答:终极父类(3),java问答Java问答:终极父类(上) Java问答:终极父类(下) Java问答:终极父类(2)-上篇 Java问答:终极父类(2)-下篇 在之前关于 Object ...

  7. java.lang.OutOfMemoryError: Java heap space错误及...

    为什么80%的码农都做不了架构师?>>>    以下是从网上找到的关于堆空间溢出的错误解决办法: java.lang.OutOfMemoryError: Java heap spac ...

  8. 浅谈Java SE、Java EE、Java ME三者的区别

    1. Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程 ...

  9. java.lang.OutOfMemoryError: Java heap space的解决办法

    如果在启动过程中出现内存溢出问题,抛出类似如下异常信息: java.lang.OutOfMemoryError: Java heap space 可以尝试办法: A.修改Tomcat/bin/cata ...

最新文章

  1. Ceres非线性优库入门介绍
  2. Docker集群管理工具-Kubernetes部署记录
  3. 二叉树中最大/最小深度与叶子数
  4. 分布式一致性hash算法
  5. GIS-004-Cesium版权信息隐藏
  6. 应用实践 | 南方科技大学研发基于新型冠状病毒知识图谱模式挖掘系统
  7. excel保存超过15位数据不变科学计数法的方法
  8. k8s 集群居然可以图形化安装了?
  9. Java代码的编译与反编译那些事儿
  10. unity android 原生,unity创建Android原生插件
  11. 访问者模式(Visitor)
  12. python函数递归 汉诺塔
  13. average diffusion distance
  14. java udp 工具类_java udp 简单实现
  15. 测试用例方法--等价类划分法
  16. jdk1.8新特性:函数式接口、方法引用、函数式编程、常用函数式接口
  17. IDEA 报错 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath,如何排除依赖冲突
  18. 手机怎么解除root权限?华为手机root教程
  19. HTML:tab页签
  20. 电脑文件不小心删除了怎么恢复 ? 删除的文件如何恢复文件?

热门文章

  1. 文件操作示例脚本 tcl
  2. 全网把Map中的hash()分析的最透彻的文章,别无二家。
  3. memcached部署
  4. OSD的主要实现方法和类型(转)
  5. Android UI Button 和GridView 的设计--优化(2)
  6. switch语句中在case块里声明变量会遇到提示“Expected expression before...的问题
  7. 反编译工具jad简单用法
  8. HTTPS网络加密双向验证-使用AFNetworking封装
  9. MQTT 协议 Client ID 长度不能超过23个字符
  10. linux系统服务介绍