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

java遞歸實(shí)現(xiàn)漢諾塔步驟介紹

 更新時(shí)間:2022年01月10日 10:06:44   作者:zzz45611  
大家好,本篇文章主要講的是java遞歸實(shí)現(xiàn)漢諾塔步驟介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

        漢諾塔的規(guī)則是:一共三根柱子,一根柱子從上到下套著有小到大的若干個(gè)圓盤,要將所有圓盤按照這個(gè)排放順序移動(dòng)到第三根柱子上,并且每次只能移動(dòng)一個(gè)圓盤.

        可以將整個(gè)過(guò)程分為三個(gè)步驟來(lái)看:

第一步:將除最大圓盤外的n-1個(gè)圓盤移動(dòng)輔助柱子上

第二步:將最大的圓盤移動(dòng)到目標(biāo)柱子

第三步:將n-1個(gè)圓盤從輔助柱子移動(dòng)到目標(biāo)柱子

其中第一步又可以拆成一模一樣的三步,可以看成一個(gè)n-1層的塔要移動(dòng)到目標(biāo)柱子,只不過(guò)目標(biāo)柱子換了一個(gè):

第三步也可以拆分成一模一樣的三步: 

        多拆幾次就會(huì)發(fā)現(xiàn)規(guī)律:第一步和第三步無(wú)論如何拆成更小的漢諾塔,都只是目標(biāo)柱和輔助柱發(fā)生調(diào)換,其他部分都是一模一樣.所以我們將第一步和第三步進(jìn)行遞歸運(yùn)算就可以解決漢諾塔問(wèn)題.

static void hanNuo(int n,String A,String B,String C){
     if (n==1){
         System.out.println("把第"+n+"個(gè)從"+A+"移動(dòng)到"+C);
     }else {
         hanNuo(n-1,A,C,B);
         System.out.println("把第"+n+"個(gè)從"+A+"移動(dòng)到"+C);
         hanNuo(n-1,B,A,C);
     }
    }

        每進(jìn)入一次遞歸塔的層數(shù)減一 ,由于第一步和第三步每拆分一次目標(biāo)塔和輔助塔就會(huì)互換,同理,每進(jìn)入一次遞歸也會(huì)將兩個(gè)塔互換,因?yàn)榈谝徊讲鸱帜繕?biāo)塔是在塔二和塔三之間循環(huán),所以我們?cè)谶M(jìn)入遞歸時(shí)也將傳入代表"塔二"和"塔三"的參數(shù)互換,同理第三步也將互換代表"塔一"和"塔二"的參數(shù).

        方法中的第二步由于第一步已經(jīng)遞歸完成,所以可以直接使用打印語(yǔ)句進(jìn)行輸出.

到此這篇關(guān)于java遞歸實(shí)現(xiàn)漢諾塔步驟介紹的文章就介紹到這了,更多相關(guān)java漢諾塔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)線性表的順序存儲(chǔ)

    Java實(shí)現(xiàn)線性表的順序存儲(chǔ)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)線性表的順序存儲(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Java Swing程序設(shè)計(jì)實(shí)戰(zhàn)

    Java Swing程序設(shè)計(jì)實(shí)戰(zhàn)

    今天教大家怎么用JavaSwing工具包實(shí)現(xiàn)一個(gè)程序的界面設(shè)計(jì),文中有非常詳細(xì)的代碼示例及注釋,對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • springboot jar包外置配置文件的解決方法

    springboot jar包外置配置文件的解決方法

    這篇文章主要給大家介紹了關(guān)于spring boot jar包外置配置文件的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot集成RocketMQ發(fā)送事務(wù)消息的原理解析

    SpringBoot集成RocketMQ發(fā)送事務(wù)消息的原理解析

    RocketMQ 的事務(wù)消息提供類似 X/Open XA 的分布事務(wù)功能,通過(guò)事務(wù)消息能達(dá)到分布式事務(wù)的最終一致,這篇文章主要介紹了SpringBoot集成RocketMQ發(fā)送事務(wù)消息,需要的朋友可以參考下
    2022-06-06
  • java線性表的存儲(chǔ)結(jié)構(gòu)及其代碼實(shí)現(xiàn)

    java線性表的存儲(chǔ)結(jié)構(gòu)及其代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)筆記第一篇,線性表的存儲(chǔ)結(jié)構(gòu)及其代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java8新特性O(shè)ptional常用方法

    Java8新特性O(shè)ptional常用方法

    optional類是Java8新增加的一個(gè)對(duì)象容器,主要的功能有對(duì)象的創(chuàng)建、獲取、判斷、過(guò)濾,映射等,下面這篇文章主要給大家介紹了關(guān)于Java8新特性O(shè)ptional常用方法的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查

    Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查

    數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • springboot+dubbo啟動(dòng)項(xiàng)目時(shí)報(bào)錯(cuò) zookeeper not connected的問(wèn)題及解決方案

    springboot+dubbo啟動(dòng)項(xiàng)目時(shí)報(bào)錯(cuò) zookeeper not connect

    這篇文章主要介紹了springboot+dubbo項(xiàng)目啟動(dòng)項(xiàng)目時(shí)報(bào)錯(cuò) zookeeper not connected的問(wèn)題,本文給大家定位問(wèn)題及解決方案,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • mybatis?xml文件熱加載實(shí)現(xiàn)示例詳解

    mybatis?xml文件熱加載實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了mybatis?xml文件熱加載實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • mybatis中點(diǎn)擊mapper接口快速定位到對(duì)應(yīng)xml中sql方式

    mybatis中點(diǎn)擊mapper接口快速定位到對(duì)應(yīng)xml中sql方式

    這篇文章主要介紹了mybatis中點(diǎn)擊mapper接口快速定位到對(duì)應(yīng)xml中sql方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論