漢諾塔是根據乙個傳說形成的乙個問題。漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天
創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門
把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。
解決這個問題的關鍵在於遞迴演算法。
我們可以這樣理解這個問題:
首先設定三根柱子編號為a、b、c,共有n個盤子在a柱子上從大到小排列,那麼我們想要把這n個盤子從a移動到c,就需要把前n-1個從a移動到b,然後把第n個盤子從a移動到c,最後把剩下n-1個盤子從b移動到c即可。
//漢諾塔問題,柱子標註為a,b,c
#includeusing namespace std;
int count = 0; //移動次數
void hannoi(int n,char a,char b,char c); //把第n個盤子借助b從a移動到c
void move(int n,char a,char b); //把n從a移動到b
int main(){
int n;
cout<<"請輸入漢諾塔的層數:";
cin>>n;
hannoi(n,'a','b','c');
cout<<"一共移動了"<
遞迴演算法 漢諾塔問題
圖1 漢諾塔分析 三個過程 漢諾塔問題,經典遞迴問題 遞迴問題的關鍵 1.如何縮小問題的規模 2.如何解決最簡單問題 即 1找出遞迴體,2找出遞迴出口 試圖追蹤程式執行過程,都是徒勞的 2018年4月10日10 49 46 by 楷諧之力 includevoid move char frm,char...
漢諾塔問題遞迴演算法
1.題目 漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間一次只...
遞迴演算法 漢諾塔問題
程式呼叫自身的程式設計技巧稱為遞迴。乙個過程或函式在其定義或說明中又直接或間接地呼叫自身的一種方法,通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解。遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的 量。遞迴的能力在於用有限的語句來定義物件的無...