public?class?Hannoi?{
為玉環(huán)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及玉環(huán)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、玉環(huán)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
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?+?"移動(dòng)盤子?"?+?level?+?"?號(hào)到"?+?to);
}?else?{
moveDish(level?-?1,?from,?to,?inter);
System.out.println("從"?+?from?+?"移動(dòng)盤子?"?+?level?+?"?號(hào)到"?+?to);
moveDish(level?-?1,?inter,?from,?to);
}
}
}
其實(shí)不知道你到底是想要代碼還是要什么
給你帖的示范代碼吧:
漢諾塔問(wèn)題的遞歸Java語(yǔ)言實(shí)現(xiàn)
public
class
Hanoi
{/**
*
*
@param
n
*
盤子的數(shù)目
*
@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);
}
}
//
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');
}
}
這樣應(yīng)該可以了 如果還有那個(gè)地方不懂的,建議你研究下漢諾塔算法
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;//定義移動(dòng)的次數(shù)
//主程序入口——main方法
public static void main(String[] args) {
//創(chuàng)建BufferedReader對(duì)象,InputStream輸入流
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("請(qǐng)輸入盤子的個(gè)數(shù):");
try {
int sl = Integer.parseInt(bf.readLine().toString());//接收總盤子個(gè)數(shù)
toMove(sl,"A","B","C");//調(diào)用移動(dòng)方法 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("總共移動(dòng)了:"+m+" 次數(shù)");//打印移動(dòng)次數(shù)
}
//移動(dòng)方法
private static void toMove(int sl, String one, String two,String three)
{
if(sl==1){//如果只有一個(gè)盤子,則直接移動(dòng)到C柱
System.out.println("盤子"+sl+" 從 "+one+"----"+three);
}else{//如果總盤數(shù)大于1,則遞歸調(diào)用移動(dòng)方法
//把所有的數(shù)量為sl-1的盤子全部從A移到到B(C作為一個(gè)過(guò)渡),好提供一個(gè)最下面的位置給最大盤子到C;
toMove(sl-1,one,three,two);
System.out.println("盤子"+sl+" 從 "+one+"----"+three);
//把所有的剩余的盤子從B移動(dòng)到C(A作為一個(gè)過(guò)渡)
toMove(sl-1,two,one,three);
}
m++;
}
}
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("請(qǐng)輸入盤數(shù):");
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);
}
}
}
import java.awt.*;
public class TowerPoint //公共類TowerPoint
{
int x,y; //定義2個(gè)int類型的變量
boolean 有盤子; //定義一個(gè)boolean類型的變量
Disk 盤子=null; //初始化一個(gè)對(duì)象"盤子"并賦值為空
HannoiTower con=null; //初始化一個(gè)HannoiTower類的對(duì)象"con"并賦值為空
public TowerPoint(int x,int y,boolean boo) //構(gòu)造函數(shù),有3個(gè)參數(shù),x,y,boo
{
this.x=x; //將參數(shù)賦給當(dāng)前x
this.y=y; //將參數(shù)賦給當(dāng)前y
有盤子=boo; //將boo賦給"有盤子"
}
public boolean 是否有盤子() //定義一個(gè)返回boolean類型的方法"是否有盤子"
{
return 有盤子; //返回boolean類型的"有盤子"
}
public void set有盤子(boolean boo) //set方法,并且參數(shù)為boolean
{
有盤子=boo; //將boo賦給有盤子
}
public int getX() //取得x方法
{
return x; //返回x
}
public int getY()//取得y方法
{
return y; //返回y
}
public void 放置盤子(Disk 盤子,HannoiTower con) //定義一個(gè)有2個(gè)參數(shù)的"放置盤子"方法。參數(shù)是Disk類和HannoiTower類
{
this.con=con; //當(dāng)前con等于參數(shù)con
con.setLayout(null); //調(diào)用on對(duì)象的方法setLayout,并設(shè)置為空
this.盤子=盤子; //當(dāng)前盤子等于參數(shù)盤子
con.add(盤子); //con對(duì)象的add方法,加入"盤子"對(duì)象
int w=盤子.getBounds().width; //定義并給一個(gè)int類型的w變量一個(gè)值,值為"盤子.getBounds().width"
int h=盤子.getBounds().height; //定義并給一個(gè)int類型的h變量一個(gè)值,值為"盤子.getBounds().height"
盤子.setBounds(x-w/2,y-h/2,w,h);//調(diào)用"盤子"對(duì)象的setBounds方法,并把傳遞值
有盤子=true;//boolean類型的對(duì)象"有盤子"等于true
con.validate(); //調(diào)用con對(duì)象的validate方法
}
public Disk 獲取盤子() //定義"獲取盤子"方法,方法返回Disk對(duì)象
{
return 盤子; //返回盤子
}
}
-----------------------另外說(shuō)一下,樓主太摳門了?。。。。。。?!只給5分-----------------------
class
HanRuoTa
{
static
long
s=0;
public
static
void
main(String
args[])
{
int
n
=3;
System.out.println("漢諾塔層數(shù)為"
+
n);
System.out.println("移動(dòng)方案為:"
);
hanoi(n,
'a',
'b',
'c');
System.out.println("需要移動(dòng)次數(shù):"+s);
}
static
void
hanoi(int
n,
char
a,
char
b,
char
c)
{
if
(n
0)
{
hanoi(n
-
1,
a,
c,
b);
move(a,
b);
hanoi(n
-
1,
c,
b,
a);
s++;
}
}
static
void
move(char
x,
char
y)
{
System.out.println(x
+
"-"
+
y
+
"\t");
}
}
運(yùn)行結(jié)果:
漢諾塔層數(shù)為3
移動(dòng)方案為:
a-b
a-c
b-c
a-b
c-a
c-b
a-b
需要移動(dòng)次數(shù):7
本文標(biāo)題:漢諾塔算法代碼java,漢諾塔遞歸算法代碼
轉(zhuǎn)載來(lái)源:http://www.sd-ha.com/article10/hdhjdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、商城網(wǎng)站、做網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)公司、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)