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)文章
Hibernate用ThreadLocal模式(線程局部變量模式)管理Session
今天小編就為大家分享一篇關(guān)于Hibernate用ThreadLocal模式(線程局部變量模式)管理Session,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03spring?@Transactional注解中常用參數(shù)詳解
這篇文章主要介紹了spring?@Transactional注解中常用參數(shù)詳解,事物注解方式:?@Transactional,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02SpringBoot SSE服務(wù)端主動推送事件的實現(xiàn)
本文主要介紹了SpringBoot SSE服務(wù)端主動推送事件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06