Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔
概述
從今天開始, 小白我將帶大家開啟 Java 數(shù)據(jù)結(jié)構(gòu) & 算法的新篇章.

漢諾塔
漢諾塔 (Tower of Hanoi) 是一個(gè)源于印度的古老益智玩具. 漢諾塔由三根柱子和若干大小不同的圓盤組成. 目標(biāo)是把圓盤從最左邊的柱子移到最右邊的柱子上. 如圖:

遞歸
遞歸 (Recursion) 指的是在函數(shù)中調(diào)用自身. 遞歸可以幫助我們簡(jiǎn)化問題, 使用更少的代碼達(dá)成目標(biāo).

漢諾塔實(shí)現(xiàn)
public class 漢諾塔 {
// 漢諾塔實(shí)現(xiàn)
private static void hanoi(int num, char a, char b, char c) {
String str = "";
// 判斷是否為最后
if(num==1) {
str = "盤1從: " + a + "->" + c;
System.out.println(str);
} else {
// 2^(n-1)次, 把除第n個(gè)盤從A移動(dòng)到B
hanoi(num - 1, a, c, b);
str = "盤" + num + "從: " + a + "->" + c;
System.out.println(str);
// 2^(n-1)次, 把除第n個(gè)盤從B移動(dòng)到C
hanoi(num - 1, b, a, c);
}
}
// main
public static void main(String[] args) {
hanoi(3, 'A', 'B', 'C');
}
}輸出結(jié)果:
盤1從: A->C
盤2從: A->B
盤1從: C->B
盤3從: A->C
盤1從: B->A
盤2從: B->C
盤1從: A->C
到此這篇關(guān)于Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔的文章就介紹到這了,更多相關(guān)Java 漢諾塔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 負(fù)載均衡的 5 種算法實(shí)現(xiàn)原理
這篇文章主要介紹Java 負(fù)載均衡的 5 種算法實(shí)現(xiàn)原理,負(fù)載均衡能夠平均分配客戶請(qǐng)求到服 務(wù)器陣列,借此提供快速獲取重要數(shù)據(jù),解決大量并發(fā)訪問服務(wù)問題,這種集群技術(shù)可以用最少的投資獲得接近于大型主機(jī)的性能。下面就來看看文章的具體內(nèi)容吧2021-10-10
詳解Java使用sqlite 數(shù)據(jù)庫如何生成db文件
這篇文章主要介紹了詳解Java 操作sqllite 數(shù)據(jù)庫如何生成db文件的相關(guān)資料,需要的朋友可以參考下2017-07-07
有關(guān)Java常見的誤解小結(jié)(來看一看)
下面小編就為大家?guī)硪黄嘘P(guān)Java常見的誤解小結(jié)(來看一看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
maven項(xiàng)目中<scope>provided</scope>的作用及說明
這篇文章主要介紹了maven項(xiàng)目中<scope>provided</scope>的作用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
JAVA提高第八篇 動(dòng)態(tài)代理技術(shù)
這篇文章主要為大家詳細(xì)介紹了JAVA動(dòng)態(tài)代理技術(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
mybatis中的mapper.xml使用循環(huán)語句
這篇文章主要介紹了mybatis中的mapper.xml使用循環(huán)語句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

