java求解漢諾塔問題示例
更新時間:2014年02月21日 12:00:07 作者:
漢諾塔問題的描述如下:有3根柱子A、B和C,在A上從上往下按照從小到大的順序放著一些圓盤,以B為中介,把盤子全部移動到C上。移動過程中,要求任意盤子的下面要么沒有盤子,要么只能有比它大的盤子。編程實現(xiàn)3階漢諾塔的求解步驟
思路如下:
要實現(xiàn)3階漢諾塔的求解步驟,也就是說初始狀態(tài)時,A上從上到下有三個盤子,分別為1號盤、2號盤和3號盤,其中1號盤最小,3號盤最大;
判斷剩余盤子個數(shù),如果只有一個盤子就退出迭代,如果有大于一個盤子就繼續(xù)迭代。
代碼如下:
復(fù)制代碼 代碼如下:
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 {// 如果有大于一個盤子就繼續(xù)迭代
moveDish(level - 1, from, to, inter);
System.out.println("從 " + from + " 移動盤子 " + level + " 號到 " + to);
moveDish(level - 1, inter, from, to);
}
}
public static void main(String[] args) {
int nDisks = 3;// 設(shè)置漢諾塔為3階
moveDish(nDisks, 'A', 'B', 'C');// 實現(xiàn)移動算法
}
}
相關(guān)文章
springboot + mybatis-plus實現(xiàn)多表聯(lián)合查詢功能(注解方式)
這篇文章主要介紹了springboot + mybatis-plus實現(xiàn)多表聯(lián)合查詢功能,是最簡單的一種注解方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
關(guān)于Controller層和Service層的類報錯問題及解決方案
這篇文章主要介紹了關(guān)于Controller層和Service層的類報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Netty4之如何實現(xiàn)HTTP請求、響應(yīng)
這篇文章主要介紹了Netty4之如何實現(xiàn)HTTP請求、響應(yīng)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Java網(wǎng)絡(luò)編程UDP協(xié)議發(fā)送接收數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程UDP協(xié)議發(fā)送接收數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

