「汉诺塔java程序」汉诺塔代码实现

博主:adminadmin 2023-03-21 10:36:05 510

本篇文章给大家谈谈汉诺塔java程序,以及汉诺塔代码实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎样用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);

}

}

}

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++;

}

}

用java实现汉诺塔的程序是啥呀?

其实不知道你到底是想要代码还是要什么

给你帖的示范代码吧:

汉诺塔问题的递归Java语言实现

public

class

Hanoi

{/**

*

*

@param

n

*

盘子的数目

*

@param

origin

*

源座

*

@param

assist

*

辅助座

*

@param

destination

*

目的座

*/

public

void

hanoi(int

n,

char

origin,

char

assist,

char

destination)

{

if

(n

==

1)

{

move(origin,

destination);

}

else

{

hanoi(n

-

1,

origin,

destination,

assist);

move(origin,

destination);

hanoi(n

-

1,

assist,

origin,

destination);

}

}

//

Print

the

route

of

the

movement

private

void

move(char

origin,

char

destination)

{

System.out.println("Direction:"

+

origin

+

"---"

+

destination);

}

public

static

void

main(String[]

args)

{

Hanoi

hanoi

=

new

Hanoi();

hanoi.hanoi(3,

'A',

'B',

'C');

}

}

关于汉诺塔java程序和汉诺塔代码实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。