java求解漢諾塔問題示例
思路如下:
要實(shí)現(xiàn)3階漢諾塔的求解步驟,也就是說初始狀態(tài)時(shí),A上從上到下有三個(gè)盤子,分別為1號(hào)盤、2號(hào)盤和3號(hào)盤,其中1號(hào)盤最小,3號(hào)盤最大;
判斷剩余盤子個(gè)數(shù),如果只有一個(gè)盤子就退出迭代,如果有大于一個(gè)盤子就繼續(xù)迭代。
代碼如下:
public class HanoiTower {
public static void moveDish(int level, char from, char inter, char to) {
if (level == 1) {// 如果只有一個(gè)盤子就退出迭代
System.out.println("從 " + from + " 移動(dòng)盤子 1 號(hào)到 " + to);
} else {// 如果有大于一個(gè)盤子就繼續(xù)迭代
moveDish(level - 1, from, to, inter);
System.out.println("從 " + from + " 移動(dòng)盤子 " + level + " 號(hào)到 " + to);
moveDish(level - 1, inter, from, to);
}
}
public static void main(String[] args) {
int nDisks = 3;// 設(shè)置漢諾塔為3階
moveDish(nDisks, 'A', 'B', 'C');// 實(shí)現(xiàn)移動(dòng)算法
}
}
相關(guān)文章
Hibernate用ThreadLocal模式(線程局部變量模式)管理Session
今天小編就為大家分享一篇關(guān)于Hibernate用ThreadLocal模式(線程局部變量模式)管理Session,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03Java中高效的判斷數(shù)組中某個(gè)元素是否存在詳解
相信大家在操作Java的時(shí)候,經(jīng)常會(huì)要檢查一個(gè)數(shù)組(無序)是否包含一個(gè)特定的值?這是一個(gè)在Java中經(jīng)常用到的并且非常有用的操作。同時(shí),這個(gè)問題在Stack Overflow中也是一個(gè)非常熱門的問題。本文將分析幾種常見用法及其時(shí)間成本,有需要的朋友們可以參考借鑒。2016-11-11spring?@Transactional注解中常用參數(shù)詳解
這篇文章主要介紹了spring?@Transactional注解中常用參數(shù)詳解,事物注解方式:?@Transactional,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02SpringBoot SSE服務(wù)端主動(dòng)推送事件的實(shí)現(xiàn)
本文主要介紹了SpringBoot SSE服務(wù)端主動(dòng)推送事件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06