欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔

 更新時(shí)間:2022年02月18日 09:37:22   作者:我是小白呀  
漢諾塔是源于印度一個(gè)古老傳說的益智玩具。大梵天創(chuàng)造世界時(shí)做了三根石柱,在一根柱子上從下往上按大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,三根柱子之間一次只能移動(dòng)一個(gè)圓盤

概述

從今天開始, 小白我將帶大家開啟 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)文章

最新評(píng)論