java实现汉诺塔的代码,求注释,具体到每一行代码,急求,,,
发布网友
发布时间:2022-04-30 16:11
我来回答
共1个回答
热心网友
时间:2022-06-27 03:59
这样应该可以了
如果还有那个地方不懂的,建议你研究下汉诺塔算法
import
java.io.BufferedReader;//引入IO包中的BufferedReader
import
java.io.IOException;//引入IO包中的IO异常处理
import
java.io.InputStreamReader;//引入IO包中的InputStreaReader
public
class
Hinoi
{
//主类
static
int
m=0;//定义移动的次数
//主程序入口--main方法
public
static
void
main(String[]
args)
{
//创建BufferedReader对象,InputStream输入流
BufferedReader
bf
=
new
BufferedReader(new
InputStreamReader(System.in));
System.out.println("请输入盘子的个数:");
try
{
int
sl
=
Integer.parseInt(bf.readLine().toString());//接收总盘子个数
toMove(sl,"A","B","C");//调用移动方法
A-->C
}
catch
(NumberFormatException
e)
{捕获NumberFormatException异常
//
TODO
Auto-generated
catch
block
e.printStackTrace();//打印异常
}
catch
(IOException
e)
{//捕获IOException异常
//
TODO
Auto-generated
catch
block
e.printStackTrace();//打印异常
}
System.out.println("总共移动了:"+m+"
次数");//打印移动次数
}
//移动方法
private
static
void
toMove(int
sl,
String
one,
String
two,String
three)
{
if(sl==1){//如果只有一个盘子,则直接移动到C柱
System.out.println("盘子"+sl+"
从
"+one+"---->"+three);
}else{//如果总盘数大于1,则递归调用移动方法
//把所有的数量为sl-1的盘子全部从A移到到B(C作为一个过渡),好提供一个最下面的位置给最大盘子到C;
toMove(sl-1,one,three,two);
System.out.println("盘子"+sl+"
从
"+one+"---->"+three);
//把所有的剩余的盘子从B移动到C(A作为一个过渡)
toMove(sl-1,two,one,three);
}
m++;
}
}
求java汉诺塔源代码的注解(急!)
import java.awt.*;public class TowerPoint //公共类TowerPoint { int x,y; //定义2个int类型的变量 boolean 有盘子; //定义一个boolean类型的变量 Disk 盘子=null; //初始化一个对象"盘子"并赋值为空 HannoiTower con=null; //初始化一个HannoiTower类的对象"con"并赋值为空 public TowerPo...
求java版汉诺塔的演示程序
源代码:/ 本程序完成的功能是利用汉递规算法实现汉诺塔的动态演示程序 / import javax.swing.*;import java.awt.geom.*;import java.awt.event.*;import java.awt.*;public class Hanio extends JApplet implements ActionListener, Runnable { / diskNum是盘子的数量 / private int diskNum ;/ 各...
跪求魔塔60层JAVA源代码,不是网页的,谢谢!
//汉诺塔的问题public class MT {public static void main(String args[]){int x=10;doit(x,1,2,3); //把10个盘子从1柱借助3柱移动到2柱,在此用60的太多了,计算机会太累的}public static void doit(int x,int a,int b,int c){//把X个盘子从A柱借助C柱移动到B柱if (x==1){S...
小学四年级河内塔问题!!!火急!!!火急!!!火急!!!
汉诺塔问题的递归Java语言实现 import java.util.Scanner; public class HanoiTest { public static void hanoi(int level,String a,String b,String c){ if(level==1) move(1,a,c); else { hanoi(level-1,a,c,b); move(level,a,c); hanoi(level-1,b,a,c); } } static void move(int level,...
JAVA中能够实现方法的递归调用吗?如何实现?
能 递归函数即自调用函数,在函数体内直接或间接的调用自己,即函数的嵌套是函数本身。递归调用又分为直接调用和间接调用 直接调用funca(){ ... funca();};间接调用;funca(){ ... funcb();}funcb(){ ... funca(); ...} 汉诺塔源码public class HanoiY { ...
java中递归的作用是什么?为什么要用到递归?
递归的作用:递归算法可以解决一些通过递归定义的题目。首先需要明白什么是递归定义的题目,通俗一点来说就是一个大问题中蕴含着小问题,而小问题同时又与大问题的结构相同,只是规模更小。比如n阶乘的定义可以理解为:n!= n*(n-1)!从上面不难看出 (n-1)! 就是比n! 规模更小的问题,按照此...
Java经典编程300例的目录
第1章 Java语言概述 1实例001 输出“Hello World” 2实例002 输出控制台传递的参数 2实例003 输出由“*”组成的三角形 3实例004 输出符号表情 5第2章 Eclipse开发工具 6实例005 下载并运行Eclipse工具 7实例006 为Eclipse安装汉化包 8实例007 使用Eclipse注释代码 10实例008 使用Eclipse格式化代码 11实例009 安装...
JAVA程序经常用到“递归”,“递归”的基本思想是
所以代码上就体现为这个函数会不断的调用自身。还有一点,并不是所有的递归都是可以实现的,或者说有意义的。如果在分解的过程中,问题最终不能分解到一个可以直接解决的问题,则这个过程是没有意义,也就是无限的循环。具体的代码都不贴了,有兴趣可以百度看看。
高分悬赏Java程序,急!!!
import java.awt.event.*; //俄罗斯方块类 public class ERS_Block extends Frame{ public static boolean isPlay=false; public static int level=1,score=0; public static TextField scoreField,levelField; public static MyTimer timer; GameCanvas gameScr; public static void main(String[] ...
谁能说说JAVA的递归是什么意思?
【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。三、示例程序:使用Java代码求5的阶乘。(5的阶乘=5*4*3*2*1)[java] view plain copy package org.wxp....