java数据结构和算法学习之汉诺塔示例
发布时间:2021-09-28 14:46:18
标签:java,数据结构,算法,汉诺塔
package com.tiantian.algorithms;
/**
* _|_1 | |
* __|__2 | |
* ___|___3 | | (1).把A上的4个木块移动到C上。
* ____|____4 | |
* A B C
*
* | | |
* | _|_1 |
* | __|__2 | 要完成(1)的效果,必须要把1、2、3木块移动到B,这样才能把4移动到C
* ____|____4 ___|___3 | 如:代码中的“调用(XX)”
* A B C
*
* | | |
* | _|_1 |
* | __|__2 | 此时,题目就变成了把B上的3个木块移动到C上,回到了题目(1)
* | ___|___3 ____|____4 如:代码中的“调用(YY)”
* A B C
*
* 然后循环这个过程
*
* @author wangjie
* @version 创建时间:2013-3-4 下午4:09:53
*/
public class HanoiTowerTest {
public static void main(String[] args) {
doTowers(4, 'A', 'B', 'C');
}
public static void doTowers(int topN, char from, char inter, char to){
if(topN == 1){
System.out.println("最后把木块1从" + from + "移动到" + to);
}else{
doTowers(topN - 1, from, to, inter); // 调用(XX)
System.out.println("把木块" + topN + "从" + from + "移动到" + to);
doTowers(topN - 1, inter, from ,to); // 调用(YY)
}
}
}
0
投稿
猜你喜欢
- 解决My eclipse 工程发布时端口占用问题如果运行后如图的错,需要进行如下操作来解决:a:打开cmd,输入netstat -ano 找
- 在Java解析XML文件的过程中,有时需要获取符合某些特定条件的节点,以下是实现代码。import javax.xml.xpath.XPat
- 前言从 Java 5.0 开始,String 类新增了一个强大的字符串格式化方法 format()。这个方法到现在用的人还是不多,实在是一种
- IO操作字节流java.io.InputStream 输入流,主要是用来读取文件内容的。java.io.OutputStream 输出流,主
- Info.CodePage Info.Name Info.
- 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档@Con
- C#用户定义类型转换•用于自定义类和结构能够进行隐式转换和显示转换.例如:将一个自定义类类型转换成整型,浮点型等,反之亦然.C#提供隐式转换
- 之前我们学习了如何使用Jpa访问关系型数据库。通过Jpa大大简化了我们对数据库的开发工作。但是,之前的例子中我们只提到了最简单的CRUD(增
- 一、定义实体类Person,封装生成的数据package net.dc.test;public class Person { private
- 昨天在与对端系统调接口的时候,对端系统对我们传过去的json串老是处理不了,后来查原因是应为我们传过去的json串里有json对象数组,因为
- 可能导致问题的原因:1.nacos中的配置文件名不规范,官网有命名规则:“前缀”-&ldqu
- 从功能上说,可以分为两部分,分布式功能和数据功能。分布式功能主要是节点集群及集群附属功能如restful借口、集群性能检测功能等,数据功能主
- 本文研究的主要是java fastdfs客户端使用实例的相关内容,具体实现如下。什么是FastDFS?FastDFS是用c语言编写的一款开源
- 本文讲述了Java开发人员需知的十大戒律。分享给大家供大家参考,具体如下:作为一个Java开发人员提高自己代码的质量,可维护性,是个恒久不变
- 详解HDFS多文件Join操作的实例最近在做HDFS文件处理之时,遇到了多文件Join操作,其中包括:All Join以及常用的Left J
- java引用传递的三种类型我这里使用了mldn视频里的例子,只用于学习交流。第一种结果:调用前:50调用后:1000分析:理解:好理解第二种
- 最近我在考虑如何远程控制tomcat的启动和关机,最后是有友好的界面,能够实现一键式操作的,这样会肯定是会很方便的,网上找了半天,没找到,有
- 前言在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,例如使用devtool来实现
- 一、前言一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文
- 1、使用场景 因为最近项目需要国际化,需要能够支持多种国际化语言,目前需要支持三种(法