汉诺塔Java简单版本
2019-07-16 13:47
316 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40903237/article/details/96130830
1、概述:汉诺塔这个问题相信是很多初入递归的同学们都遇到的一个稍微有一些入门难度的问题。在这里贴出代码简单解析一下,这个问题只要想通了就知道递归解法非常好做,想不通就比较纠结,多想想还是可以的!
2、代码段
[code]package com.algorithm;/** * Created by yuanfeng on 2019/7/16 13:05 */ import java.util.Scanner; /** *@ClassName Hanoi *@Description T0D0 *@Author yuanfeng *@Date 2019/7/16 13:05 *@Version 1.0 **/ public class Hanoi { public static void move(int n,char A,char B,char C){ if(n == 1){ System.out.println(A+"--->"+C);//如果只有一个盘 }else{ move(n-1,A,C,B);//把A上面n-1个盘借助C移动到B System.out.println(A+"--->"+C);//第n个盘子直接到C上面 move(n-1,B,A,C);//将n-1个盘子从B借助A到C上面 } } public static void main(String[] args) { char A = 'A'; char B = 'B'; char C = 'C'; System.out.println("请输入多少个n:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); move(n,A,B,C); } }解析:该问题就要去思考的一个点就是把上面的n-1个盘当做一个整体,然后分而治之,不断的递归调用进行解决,首先我们看到分两种情况考虑,第一只有一个盘子的时候,那个时候直接从A柱子移动到C柱子即可。不需要解决其他柱子来解决。第二当盘子个数大于1的时候首先考虑上面的n-1个盘子借助B从A移动到C,第n个盘子直接从A移动到C。再把B柱子上面的n-1个盘子借助A移动到C。这次懂了吧。。。。
相关文章推荐
- 简单的神经网络模型java版本
- ZeroMQ 简单的高性能REP-REQ模型,Java语言版本
- k-近邻算法的简单Java版本
- 很不错的一个汉诺塔演示动画(Java版本)
- Kafka简单的Java版本的Hello World实例
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- 【初学java】反射的性能损耗 -- 简单加法,反射版本执行时间是普通代码版本的20倍!
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- kafka学习(二)---- Kafka简单的Java版本的Hello World实例
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- zeroMQ 简单的PUB-SUB 高性能模式,java 语言版本
- Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法
- 一个简单文件检索程序,java版本和ruby版本
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- 一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本
- java 简单的文件上传下载服务器模型(NIO 版本)
- 一个简单的一致性哈希算法实现(Java版本)
- 简单词法分析器java版本
- Java环境变量配置和Android Stdio环境变量配置(超简单版本)
- Nginx+Tomcat+Redis负载均衡Session共享实现超级简单(CentOS6.9系统 Java版本)