03-JAVA方法
答:我发现这两个方法的返回类型以及参数类型不一样。
package 汉诺塔问题; /*
*汉诺塔问题
*作者:徐浩军 日期:16.10.16 天气:晴
*/
public class TowersOfHanoi
{
//用于递归移动盘子
public static void solveTowers( int disks, int sourcePeg,
int destinationPeg, int tempPeg ) //第一个参数的意思是盘子的总数,第二个参数的意思是起始盘,第三个参数是目标盘,第四个参数是辅助盘
{
// 当只有一个盘子的时候直接从起始盘移动到目标盘
if ( disks == 1 )
{
System.out.print( sourcePeg+" -->"+destinationPeg+ " ");
return;
} // 终止条件
//递归步骤:首先把N-1个盘子从起始盘借助目标盘移动到辅助盘
solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg ); // 把起始盘上的最后一个盘子移动到目标盘上
System.out.print( sourcePeg+" -->"+destinationPeg+ " "); // 从辅助盘上把N-1个盘子移动到目标盘上
solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg );
} // 结束 public static void main( String[] args )
{
int startPeg = 1; // 起始盘
int endPeg = 3; // 目标盘
int tempPeg = 2; // 辅助盘
int totalDisks = 3; // 盘子的总数 // 进行移动
solveTowers( totalDisks, startPeg, endPeg, tempPeg );
} // main结束
} //类终止
程序设计思路:
这个问题很明显要用递归的思想来解决问题。
首先定义一个函数用来进行递归操作,
参数有盘子的总数N,起始柱子A,目标柱子B,以及辅助柱子C。
递归实现:先把A上的N-1个盘子移到B上,然后把A上的第N个盘子移到C上,最后把B上的N-1个盘子移到C上,
通过递归,这个问题解决了。
首先终止条件是当只有一个或者零个字符的时候,他是回文的。通过递归,先判断第N个与第一个,在判断第N-1个与第二个。最后就可以解决这个问题。
03-JAVA方法的更多相关文章
- Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un
ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法 Java 实例 汉诺塔(又称河内塔)问题是源 ...
- [03]java中的方法以及控制语句
00 Java中的语句块 语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句.块确定了局部变量的作用域.块中的程序代码,作为一个整体,是要被一起执行的.块可以被嵌套在另一个块中,但 ...
- 065 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参无返回值方法
065 01 Android 零基础入门 01 Java基础语法 08 Java方法 03 带参无返回值方法 本文知识点:带参无返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- JNI中C调用Java方法
背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针 1.1. java方法引用(Method References) 与c#委托与脚本语言js ...
- C#调用Java方法(详细实例)
C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用 ...
- Android C代码回调java方法
本文将讲述下列三种C代码回调java方法 1.c代码回调java空方法 2.c代码回调java int类型参数方法 3.c代码回调javaString类型参数方法 方法都差不多,先看c代码回调java ...
- oracle调用java方法的例子(下面所有代码都是在sql/plus中写)
在Oracle中调用Java程序,注意:java方法必须是static类型的,如果想在JAVA中使用system.out/err输出log. 需要在oracle 中执行"call dbms_ ...
随机推荐
- Appium自动化时,如何快速获得Android app的包名和启动页
在app自动化的时候,经常被问道如何知道app的包名和启动页名称.这个问题很简单: 1. 最直接的方式,去问开发啊,他们告诉你app的包名和启动页. 2. 如果你比较腼腆,又能看到/懂代码,自己把代码 ...
- 【ASP.net】Equals 和 == 的区别
在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...
- 如何让AutoCAD自动加载Arx,比如ArxDbg.arx
1.在AutoCAD的安装根目录下,用记事本创建一个acad.rx文件,如下 ------acad.rx----- ArxDbg.arx -------------------- 2.将ArxDbg. ...
- [JBoss] - 在Jboss 7.1 AS中打印hibernate的SQL方法
因为JBoss使用的是log4j,JBoss的系统日志级别默认是INFO.而Hibernate或IBatis要打印SQL,级别为DEBUG,所以,程序设置了log4j级别为DEBUG会被JBoss系统 ...
- Android AChartEngine 个性化设置
AChartEngine的确是一个强大的图标引擎,但文档写得不是很详细,很多设置只能通过方法名推测和实际尝试,下面是一些自己在实际中遇到的需要设置的选项,常见的那些和通过方法名就能轻松猜到的就不赘述了 ...
- volley_之2
一开始会不会觉得有点怔,为什么只需要将请求添加到队列中,不需要去发送请求吗?当然是要的,只是这一切都被封装在Volley后面而已. 我们先来看一下隐藏在Volley后面的这个架构是怎么样的吧,如下图: ...
- Ubuntu16.04安装配置Eclipse 以及opencv的使用
安装配置http://www.oracle.com下载与自己电脑系统对应的JDK.我下载的是jdk-8u101-linux64.tar.gz 解压:sudo tar -zxvf jdk-8u101-l ...
- gerrit error: unpack failed: error Permission denied
gerrit服务器迁移后,clone和pull代码到本地,都没问题. 但是,push时,报错: 查看了下git版本库存储目录,发现git下版本库镜像文件owner都是root.因为之前安装的gerri ...
- 64. ZigZag Conversion
ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given nu ...
- 构造方法Constructor
构造函数的名称与类名相同,没有返回值类型,主要用于在创建对象的时候进行一些初始化操作,如一个类中没有构造方法,java会默认给一个无参的构造方法