經典遞迴問題 漢諾塔

2021-08-17 22:12:58 字數 621 閱讀 5797

漢諾塔

漢諾塔問題第一次接觸時就感覺非常有趣,但是由於當時知識有限不能深刻地理解遞迴的含義,所以沒能繼續深究,現在來談一談吧。

題目描述:漢諾塔**於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從上往下從小到大順序摞著64片**圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。

並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤,只能移動在最頂端的圓盤。

思路:假設有a,b,c三個柱子,當a上只有乙個盤子時直接將該盤子移到另一柱子上;當a上有兩個盤子時,先借助b將第乙個移到b上,其次將最後乙個移到c上,然後再將第乙個盤子移到c上;當有三個盤子時,先將前兩個借助c移到b,其次將最後乙個移到c,然後再將b上的借助a移到c;當有n個盤子時,先將前n-1個借助c移到b,其次將最後乙個移到c,然後再將b上的借助a移到c。

具體實現**為c++如下:

#includeusing namespace std;

int count;

void move(char a,char c){

cout<<++count<<','<< a<<"->"<>i;

hanoi(i,'a','b','c');

cout<<"一共"<

經典問題 漢諾塔(遞迴)

c 如下 法國數學家愛德華 盧卡斯曾編寫過乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片 一次只...

經典遞迴 漢諾塔問題

有三個柱子,三個盤子都在第乙個柱子上,現在要移到第三個柱子上,要求移動過程中盤子相對位置不變,小的還是在上,大的在下。思路 分兩步 1.將n 1個盤從乙個柱子移到另乙個柱子 借助另外乙個柱子 n 1 2.將1個盤子從乙個柱子移到另乙個柱子 用3個柱子移動n 1個盤子,目的 把所有盤子從x移到z vo...

漢諾塔 經典遞迴問題

漢諾塔問題是乙個經典的遞迴問題,大意是 有a,b,c三根柱子,a柱上有n個盤子,小的在上,大的在下,現在要在b柱的幫助下將a柱上的所有盤子移動到c柱上,而且要求每次只能移動乙個,並且任何時候小的盤子只能在大的盤子上面。利用遞迴逐步分解問題的思想可以輕鬆解決這道題。首先考慮只有乙個圓盤 n 0 的情況...