遞歸應(yīng)用(1) Hanoi塔問(wèn)題

/**
 * Created by Luty on 2017/4/23.
 */
public class HanoiTower {
    static int nDisks=6;
    public static void main(String[] args){
        doTower(nDisks,'A','B','C');
    }
    public static void doTower(int topN,char from,char inter,char to){
        if (topN == 1){
            System.out.println("Disk 1 from "+from+" to "+to);
        }else{
            doTower(topN-1,from,to,inter);
            System.out.println("Disk "+topN+" from "+from+" to "+to);
            doTower(topN-1,inter,from,to);
        }
    }
}

漢諾塔分為源塔S,過(guò)度塔I,目標(biāo)塔A,S上有n個(gè)盤(pán)子,將盤(pán)子移動(dòng)到A,保持大的盤(pán)子在小盤(pán)子下方:
1、如果S上只有1個(gè)盤(pán)子,將盤(pán)子移動(dòng)到A上:

if (topN == 1){
    System.out.println("Disk 1 from "+from+" to "+to);
}

2、A作為過(guò)渡塔,將S上的n-1移動(dòng)到I上:

doTower(topN-1,from,to,inter);

3、2操作完遞歸調(diào)用完之后已經(jīng)將S上最下方的移動(dòng)到A上了,此時(shí)需要考慮將I作為源,移動(dòng)到目標(biāo)塔上

doTower(topN-1,inter,from,to);

總結(jié)

理解漢諾塔的問(wèn)題關(guān)鍵在于把源塔上的n-1作為一個(gè)整體移動(dòng),但整體怎么移動(dòng)我們不用關(guān)心,調(diào)用遞歸就好了;
想象S只有兩個(gè)盤(pán)子的情況(從上到下分別為1、2),塔分別是A、B、C,1作為一個(gè)整體,首先考慮移動(dòng)到B塔,2作為最后一個(gè)移動(dòng)到C塔,最后B作為源塔,以A為過(guò)渡,調(diào)用遞歸,判斷調(diào)用時(shí)為n==1,故執(zhí)行topN==1的操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 遞歸算法 開(kāi)放分類:數(shù)學(xué)術(shù)語(yǔ)術(shù)語(yǔ)科學(xué)自然科學(xué)計(jì)算機(jī)術(shù)語(yǔ) 遞歸算法是把問(wèn)題轉(zhuǎn)化為規(guī)??s小了的同類問(wèn)題的子問(wèn)題。然后遞...
    LuckTime閱讀 286評(píng)論 0 0
  • 問(wèn)題描述在世界中心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創(chuàng)造世界的時(shí)候,在...
    Java紅茶閱讀 671評(píng)論 1 2
  • 原文鏈接(轉(zhuǎn)載請(qǐng)注明出處)漢諾塔的圖解遞歸算法 起源 漢諾塔(又稱河內(nèi)塔)問(wèn)題是源于印度一個(gè)古老傳說(shuō)的益智玩具。大...
    Dmego閱讀 1,666評(píng)論 0 0
  • 淅淅陰雨秋意濃 碌碌時(shí)節(jié)正堪紅 傘面不遮衣衫濕 無(wú)休無(wú)期度中秋
    congba閱讀 203評(píng)論 0 2
  • 最近想學(xué)一門(mén)前端框架,之前看了一些Angular1的教程,難學(xué)就不說(shuō)了,它的主人好像有了放棄他的意思,推出了Ang...
    physihan閱讀 5,388評(píng)論 0 5

友情鏈接更多精彩內(nèi)容