Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔
概述
從今天開(kāi)始, 小白我將帶大家開(kāi)啟 Java 數(shù)據(jù)結(jié)構(gòu) & 算法的新篇章.
漢諾塔
漢諾塔 (Tower of Hanoi) 是一個(gè)源于印度的古老益智玩具. 漢諾塔由三根柱子和若干大小不同的圓盤(pán)組成. 目標(biāo)是把圓盤(pán)從最左邊的柱子移到最右邊的柱子上. 如圖:
遞歸
遞歸 (Recursion) 指的是在函數(shù)中調(diào)用自身. 遞歸可以幫助我們簡(jiǎn)化問(wè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 = "盤(pán)1從: " + a + "->" + c; System.out.println(str); } else { // 2^(n-1)次, 把除第n個(gè)盤(pán)從A移動(dòng)到B hanoi(num - 1, a, c, b); str = "盤(pán)" + num + "從: " + a + "->" + c; System.out.println(str); // 2^(n-1)次, 把除第n個(gè)盤(pán)從B移動(dòng)到C hanoi(num - 1, b, a, c); } } // main public static void main(String[] args) { hanoi(3, 'A', 'B', 'C'); } }
輸出結(jié)果:
盤(pán)1從: A->C
盤(pán)2從: A->B
盤(pán)1從: C->B
盤(pán)3從: A->C
盤(pán)1從: B->A
盤(pán)2從: B->C
盤(pán)1從: A->C
到此這篇關(guān)于Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔的文章就介紹到這了,更多相關(guān)Java 漢諾塔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JSP頁(yè)面無(wú)法識(shí)別EL表達(dá)式問(wèn)題解決方案
這篇文章主要介紹了JSP頁(yè)面無(wú)法識(shí)別EL表達(dá)式問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07java 中 request.getSession(true、false、null)的區(qū)別
這篇文章主要介紹了java 中 request.getSession(true/false/null)的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-02-02springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例
這篇文章主要介紹了springboot整合ehcache和redis實(shí)現(xiàn)多級(jí)緩存實(shí)戰(zhàn)案例,從源碼角度分析下多級(jí)緩存實(shí)現(xiàn)原理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08Spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用
這篇文章主要介紹了spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Java concurrency之共享鎖和ReentrantReadWriteLock_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本篇文章主要介紹了Java concurrency之共享鎖和ReentrantReadWriteLock,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06Spring MVC中基于自定義Editor的表單數(shù)據(jù)處理技巧分享
Spring MVC中基于自定義Editor的表單數(shù)據(jù)處理技巧。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12