java思考题

1.观看一下代码,你发现了什么特殊之处?

返回值类型以及参数类型不一样。

2.解决汉诺塔问题

代码:

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 = 4; // 盘子总数
solveTowers( totalDisks, startPeg, endPeg, tempPeg );

}

程序设计思路:定义一个函数进行递归操作,盘子总数为N,1为起始盘,2为辅助盘,3为目标盘,先把1上的N-1个盘子移到2上,再把1上的最后一个盘子移到3上,最后把2上的N-1个盘子移到3上,然后递归,直至完成。

3.通过递归判断字符串是否回文

回文是指正着读和反着读都一样,比如“我是谁是我”,先判断第1个和第N个,然后判断第2个和第N-1个......通过递归,当最后只有一个或零个字符时,程序终止,结束。

时间: 2024-10-31 19:30:14

java思考题的相关文章

java动手动脑课后思考题

public class SquareInt { public static void main(String[] args) { int result; for (int x = 1; x <= 10; x++) { result = square(x); // Math库中也提供了求平方数的方法 // result=(int)Math.pow(x,2); System.out.println("The square of " + x + " is " +

Java课后思考题

1.简述path和classpath的区别. path:path环境变量是系统环境变量中的一种,它用于保存一系列可执行文件的路径,每个路径之间以分号分隔.当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path环境变量中定义的路径下去寻找这个文件,如果仍未找到,系统会报错. classpath:classpath环境变量也是系统环境变量中的一种,它用于保存一系列类(.class)文件的路径.当Java虚拟机需要运行一个类时,会先在classpa

java课后思考题(五)

1.使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件. import java.io.IOException;import java.nio.file.FileSystems;import java.nio.file.FileVisitResult;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.PathMatcher;import java.n

43 Java语言基础思考题Java中的参数传递问题

1 /* 2 3 基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失 4 引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问 5 6 基本数据类型传递给参数的是值 7 引用数据类型传递给参数的是地址 8 9 但是地址也是值,所以参数的传递,传递都是值. 10 11 */ 12 13 14 class Demo5{ 15 public static void main(String[] args) { 16 int a = 10; 1

小tips:用java模拟小球做抛物线运动

这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我调试了很久,上网也找了很多资料,但是没有那种适合我们小白的教程,于是我简单讲讲我的思路.我将从如何画一个小球开始到一步步实现小球进行抛物线运动.嘿嘿!! 一.任务分解 现在我们来做抛物线运动的小球,先不急写代码,先来想象一下做好的结果是什么样子的.我将这个任务分成三步,第一步,画一个小球:第二步,该

java学习:JMM(java memory model)、volatile、synchronized、AtomicXXX理解

一.JMM(java memory model)内存模型 从网上淘来二张图: 上面这张图说的是,在多核CPU的系统中,每个核CPU自带高速缓存,然后计算机主板上也有一块内存-称为主内(即:内存条).工作时,CPU的高速缓存中的数据通过一系列手段来保证与主内的数据一致(CacheCoherence),更直白点,高速缓存要从主内中load数据,处理完以后,还要save回主存. 上图说的是,java中的各种变量(variable)保存在主存中,然后每个线程自己也有自己的工作内存区(working me

20145216史婧瑶《Java 程序设计》第4周学习总结

20145216 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 继承基本上就是避免多个类间重复定义共同行为. 在Java中,继承时使用extends关键字,private成员也会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取(如果父类愿意提供访问方法的话).如: public class SwordsMan extends Role { public void fight() { System.out.println("挥剑

传智播客_2015年Java基础视频-深入浅出精华版 笔记(2015年9月14日23:11:11)

本笔记是个人笔记+摘录笔记相结合,非完全原创 day01 win 7系统打开DOS有趣方法:按住shift+右键,单击“在此处打开命令窗口”(注意:在此处可以是任何的文件夹,不一定是桌面) 用DOS删除的文件不可以在回收站恢复?!! 常用DOS命令d: 回车 盘符切换dir(directory):列出当前目录下的文件以及文件夹md (make directory) : 创建目录(创建文件夹)rd (remove directory): 删除目录(删除文件夹,注意:前提是文件夹必须是空的!!)如果

黑马程序员-java基础-java基础语法1

------- android培训.java培训.期待与您交流! ----------  02.01 关键字的概述和使用 关键字概述:被Java语言赋予特定含义的单词 关键字特点:组成关键字的字母全部小写 关键字注意事项:goto和const作为保留字存在,目前并不使用,类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观 保留字:在JDK的新版本中可能提升为关键字 02.02 标识符的概述和组成规则 标识符概述:就是给类,接口,方法,变量等起名字时使用的字符序列 组成规