河內之塔 漢諾塔問題 遞迴

2022-09-04 01:39:08 字數 655 閱讀 8992

河內之塔(towersofhanoi)是法國人m.claus(lucas)於2023年從泰國帶至法國的,河內為越戰時 北越的首都,即現在的胡志明市;2023年法國數學家edouardlucas曾提及這個故事,據說創世紀時benares有一座波羅教塔,是由三支鑽石棒(pag)所支撐,開始時神在第一根棒上放置64個由上至下依由小至大排列的金盤(disc),並命令僧侶將所有的金盤從第一根石棒移至第三根石棒,且搬運過程中遵守**子在小盤子之下的原則,若每日僅搬乙個盤子,則當盤子全數搬運完畢之時,此塔將毀損,而也就是世界末日來臨之時。解法如果柱子標為abc,要由a搬至c,在只有乙個盤子時,就將它直接搬至c,當有兩個盤子,就將b當作輔助柱。如果盤數超過2個,將第三個以下的盤子遮起來,就很簡單了,每次處 理兩個盤子,也就是:a->b、a->c、b->c這三個步驟,而被遮住的部份,其實就是進入程式的遞迴處理。事實上,若有n個盤子,則移動完畢所需之次數為2^n-1,所以當盤數為64時,則 64所需次數為:2 -1=8446744073709551615為5.05390248594782e+16年,也就是約5000世紀,如果對這數字沒什么概念,就假設每秒鐘搬乙個盤子好了,也要約5850億年左右。 

#include using namespace std;

void hano(int n,char a,char b,char c)

漢諾塔 河內塔 問題 遞迴

description 漢諾塔 又稱河內塔 問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒a b和c,a上面套著 n 個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從a棒搬到c棒上,規定可利用中間的一根b棒作為幫助,但每次只能...

漢諾塔(河內塔)

1883年,一位法國的數學家edouard lucas 教授在歐洲的乙份雜誌上介紹了乙個相當吸引人的難題 迷人的智力遊戲。這個遊戲名為河內塔 tower of hanoi 它源自古印度神廟中的一段故事 也有一說是lucas 教授為增加此遊戲之神秘色彩而捏造的 傳說在古老的印度,有一座神廟,據說它是宇...

漢諾塔問題(遞迴)

題目描述 對於傳統的漢諾塔遊戲我們做乙個拓展,我們有從大到小放置的n個圓盤,開始時所有圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求我們要把所有的圓盤都移到右邊的柱子上,請實現乙個函式列印最優移動軌跡。給定乙個int n,表示有n個圓盤。請返回乙個string陣列,其中的元素依次為每次移動的描述。描述...