經典遞歸 - 漢諾塔問題

      網友投稿 746 2022-05-28

      最近,想復習一下C語言,所以筆者將會在掘金每天更新一篇關于C語言的文章! 各位初學C語言的大一新生,以及想要復習C語言/C++知識的不要錯過哦! 夯實基礎,慢下來就是快!

      漢諾塔問題

      百度百科

      漢諾塔(Tower of Hanoi),又稱河內塔,是一個源于印度古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。

      不管這個傳說的可信度有多大,如果考慮一下把64片金片,由一根針上移到另一根針上,并且始終保持上小下大的順序。這需要多少次移動呢?這里需要遞歸的方法。假設有n片,移動次數是f(n).顯然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。此后不難證明f(n)=2^n-1。n=64時,

      假如每秒鐘一次,共需多長時間呢?一個平年365天有31536000秒,閏年366天有31622400秒,平均每年31557600秒,計算一下:

      18446744073709551615秒

      問題分析

      A上面放的盤子上面小下面大,借助B盤,將A中的盤子移動到C,移動時要保證B,C的盤子都是上面小下面大,要一個一個盤子移動

      經典遞歸 - 漢諾塔問題

      解決方法

      解決方法:

      1.把A中的n-1個盤子通過C移動到B

      2.把A中的剩余的1個盤子移到C

      3.把B中的n-1個盤子,通過A移到C 不斷遞歸

      代碼分析

      void move(char pos1, char pos2) { printf("%c->%c ", pos1, pos2); } /* n:要移動的盤子數, pos1:起始位置 pos2:中轉位置 pos3:目的位置 */ void Hanoi(int n, char pos1, char pos2, char pos3) { if (n == 1) { move(pos1, pos3); //只有一個盤子,直接從pos1->pos3 } else { /*(1)以C盤為中介,從A桿將1至n - 1號盤移至B桿; (2)將A桿中剩下的第n號盤移至C桿; (3)以A桿為中介;從B桿將1至n - 1號盤移至C桿。*/ Hanoi(n - 1, pos1, pos3, pos2); //以C盤為中介,從A桿將1至n - 1號盤移至B桿 move(pos1, pos3);//將A桿中剩下的一個盤移至C桿; Hanoi(n - 1, pos2, pos1, pos3);//以A桿為中介;從B桿將1至n - 1號盤移至C桿。 } } int main() { Hanoi(3, 'A', 'B', 'C'); return 0; }

      明天將會給大家帶來經典下一個經典的遞歸問題-青蛙跳臺階問題!歡迎大家關注

      今天就先到這吧~感謝你能看到這里!希望對你有所幫助!歡迎老鐵們點個關注訂閱這個專題! 同時歡迎大佬們批評指正!

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:《企業級大數據平臺構建:架構與實現》——2.1.2 RAID技術
      下一篇:【數據結構與算法】之深入解析漢諾塔問題的求解思路與算法示例
      相關文章
      久久精品国产亚洲AV高清热| 亚洲AV人无码综合在线观看 | 香蕉视频在线观看亚洲| 一区二区三区亚洲视频| 亚洲精品无码av片| 亚洲一区二区三区国产精华液| 中文字幕 亚洲 有码 在线| 亚洲av乱码一区二区三区香蕉| 亚洲精品美女视频| 亚洲精品中文字幕乱码影院| 亚洲综合免费视频| 亚洲精品午夜久久久伊人| 久久久亚洲精品国产| 亚洲va在线va天堂va不卡下载 | 亚洲欧洲国产综合AV无码久久| 亚洲 日韩 色 图网站| 亚洲中文字幕无码一去台湾 | 亚洲国产精品高清久久久| 亚洲AV无码专区亚洲AV伊甸园| 亚洲AV无码一区东京热久久| 亚洲国产成人久久综合一| 亚洲视频在线观看一区| 久久亚洲精品人成综合网| 亚洲经典在线观看| 亚洲一区二区三区在线观看蜜桃| 亚洲综合伊人制服丝袜美腿| 亚洲中文无码永久免| 亚洲AV无码成人网站在线观看| 亚洲aⅴ天堂av天堂无码麻豆| 一级毛片直播亚洲| 亚洲香蕉成人AV网站在线观看| 亚洲AV中文无码字幕色三| 夜夜亚洲天天久久| 亚洲一级免费视频| 亚洲日本VA午夜在线电影| 另类图片亚洲校园小说区| 精品亚洲一区二区三区在线播放 | 亚洲成A人片在线播放器| 国产成人人综合亚洲欧美丁香花| 亚洲精品乱码久久久久久蜜桃| 亚洲色婷婷综合久久|