漢諾塔問題(遞迴)

2021-08-25 17:04:45 字數 634 閱讀 7283

漢諾塔:

在印度,有這麼乙個古老的傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,有三根柱子。印度教的主神梵天在創造世界的時候,在其中一根柱子上從下到上地穿好了由大到小的64片金盤,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金盤:一次只移動一片,不管在哪根柱子上,小片必須在大片上面。

僧侶們預言,當所有的金片都從梵天穿好的那根柱子上移到另外一根柱子上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸於盡。

雖然很羅嗦。。。遞迴這個問題從大一剛開始學c一直困擾著我,現在總算是想通了

分享乙個寫的特別好的部落格,很有助於理解  漢諾塔問題

#include#includeusing namespace std;

//int num;

//遞迴函式的寫法最重要的是將這個函式看成乙個黑箱,只管這個黑箱的功能,利用這個功能完成整個操作

//將整個問題的規模減小乙份,這個函式寫完了,代表整個操作就完了

void hanoi(int n,int src,int mid,int dest)//此函式為完整一步操作:將n個盤子從src借助mid移到dest

int main()

return 0;

}

漢諾塔問題(遞迴)

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

漢諾塔問題(遞迴)

問題 漢諾塔問題 解法 遞迴求解 思路 先把n 1從a移動b 在把第n個從a移到c 使用遞迴使得 變得簡單 複雜度 2的n次方 1 includeint step 1 void hanoi int level,char a,char b,char c 1 當盤子數大於1時,先把n 1個從a借助c移動...

漢諾塔問題 遞迴

漢諾塔問題是乙個經典的問題。漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在...