
正文
汉落塔java代码 汉诺塔代码python
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java实现汉诺塔的代码,求注释,具体到每一行代码,急求,,,
这样应该可以了
如果还有那个地方不懂的,建议你研究下汉诺塔算法
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++;
}
}
相关问答
Q1: 怎样用Java编写汉诺塔程序
package Hanoi;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class Hanoi {
public static void main(String args[]) throws IOException {
Hanoi aa = new Hanoi();
aa.go();
}
public void go() throws IOException {
int n;
BufferedReader buf;
buf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入盘数:");
n = Integer.parseInt(buf.readLine());
Hanoi hanoi = new Hanoi();
hanoi.move(n, 'A', 'B', 'C');
}
public void move(int n, char a, char b, char c) {
if (n == 1) {
System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
} else {
move(n - 1, a, c, b);
System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
move(n - 1, b, a, c);
}
}
}
Q2: 求一个汉诺塔的JAVA代码
public class Hannoi {
public static void main(String[] args) {
int nDisks = 3;
moveDish(nDisks, 'A', 'B', 'C');
}
private static void moveDish(int level, char from, char inter, char to) {
if (level == 1) {
System.out.println("从" + from + "移动盘子 " + level + " 号到" + to);
} else {
moveDish(level - 1, from, to, inter);
System.out.println("从" + from + "移动盘子 " + level + " 号到" + to);
moveDish(level - 1, inter, from, to);
}
}
}
汉落塔java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于汉诺塔代码python、汉落塔java代码的信息别忘了在本站进行查找喔。







