日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

汉诺塔java程序_Java编写一个汉诺塔的过程

發(fā)布時間:2024/8/23 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汉诺塔java程序_Java编写一个汉诺塔的过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

[java]代碼庫/*

* 需求:用Java編寫一個漢諾塔的過程

* 漢若塔問題,就是把A柱子上面從大到小一次疊放的盤子借助B柱移到C柱上去,規(guī)則是一次只能移動一個盤子,大盤子不能放到小盤子之上

*

* 思想:采用遞歸的方法來接

* 1. 先將A上面的n-1個盤子,移到B柱上

* 2. 然后把A上最大的一個盤子放到C上去

* 3. 然后把B上面的n-1個盤子移到A上去

*

* 步驟:

* 漢若塔用遞歸思考首先考慮一種臨界狀態(tài),把n-1個上面的盤從A—B, 就是把n從A移動到C,最后把n-1個盤從B---C,

* (注意在考慮把n-1個盤從B---C的時候就出現(xiàn)遞歸調用,如果把A,B盤交換就又重復上面的流程了,最后到n = 1的時候就返回)

*

* 偽代碼:

* public void run(int n, char a, char b, char c)

{

if(n==1)

{

move(n,a,c) //等于1的時候把盤從A移動到C

}else

{

run(n-1,a,b,c);//遞歸調用把a上面的n-1個盤移動到B上,怎么表示移動?把柱子交換不就是移動了。

move(n,a,c);

run(n-1,b,a,c);//意圖是把n-1個盤從B移動到A上。

}

}

*

*/

public class HanoiTower {

public static void moveDish(int level, char from, char inter, char to)

{

if(level ==1)

{

System.out.println("從 "+from+"移動盤子1號到 "+to);

}else

{

moveDish(level-1,from,to,inter);

System.out.println("從 "+from+" 移動盤子 "+level+" 號到 "+to);

moveDish(level-1,inter,from,to);

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

int nDisks = 3;

moveDish(nDisks,'A','B','C');

}

}

//源代碼片段來自云代碼http://yuncode.net

總結

以上是生活随笔為你收集整理的汉诺塔java程序_Java编写一个汉诺塔的过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。