**實現:
1 #include23//view code函式的形參a、b、c不一定代表的是a、b、c柱子,遞迴傳參的時候會變化!
4void hanoit(int n,char a,char b,charc)9
else19}
2021
intmain()
主函式傳參hanoit(2,』a『,『b','c'),壓棧1。
n!=1,於是遞迴執行 hanoit(2-1,a,c,b),壓棧2。
n==1,輸出語句,壓棧3,輸出「將編號為1的盤子從a柱移到b柱",出棧3。
函式hanoit(2-1,a,c,b)出棧2
執行下一條輸出語句,壓棧2,輸出」將編號為2的盤子從a柱移到c柱「,出棧2
執行遞迴 hanoit(2-1,b,a,c),壓棧2,輸出」將編號為1的盤子從b柱移到c柱「,出棧2
函式hanoit(2,』a『,『b','c')出棧1
程式執行完畢
主函式傳參hanoit(n=3,a=』a『,b=『b',c='c'),壓棧1。此時a=a、b=b、c=c
n==3,遞迴執行hanoit(3-1,a,c,b),壓棧2。此時a=a==a、b=c==c、c=b==b
n==2,遞迴執行hanoit(2-1,a,c,b),壓棧3。此時a=a==a、b=c==b、c=b==c
n==1,輸出語句,壓棧4,輸出「將編號為1的盤子從a柱移到c柱",出棧4。
函式hanoit(2-1,a,c,b)執行完畢,出棧3
執行下一條輸出語句,壓棧3,輸出」將編號為2的盤子從a柱移到b柱「,出棧3。
執行函式hanoit(2-1,b,a,c),壓棧3,此時a=b==c、b=a==a、c=c==b
n==1,輸出語句,壓棧4,輸出「將編號為1的盤子從c柱移到b柱",出棧4
函式hanoit(2-1,b,a,c)執行完畢,出棧3
函式hanoit(3-1,a,c,b)執行完畢,出棧2
執行下一條輸出語句,壓棧2,輸出「將編號為3的盤子從a柱移到c柱",出棧2
注意此時n==3時的各個引數順序,往下繼續執行hanoit(3-1,b,a,c),壓棧2,此時a=b==b、b=a==a、c=c==c
n==2,遞迴執行hanoit(2-1,a,c,b),壓棧3。此時a=a==b、b=c==c、c=b==a
n==1,輸出語句,壓棧4,輸出「將編號為1的盤子從b柱移到a柱",出棧4。
函式hanoit(2-1,a,c,b)執行完畢,出棧3
執行下一條輸出語句,壓棧3,輸出」將編號為2的盤子從b柱移到c柱「,出棧3。
往下執行hanoit(2-1,b,a,c),壓棧3。此時a=b==a、b=a==b、c=c==c
n==1,輸出語句,壓棧4,輸出「將編號為1的盤子從a柱移到c柱",出棧4
函式hanoit(2-1,b,a,c)執行完畢,出棧3
函式hanoit(3-1,b,a,c)執行完畢,出棧2
函式hanoit(n=3,a=』a『,b=『b',c='c')執行完畢,出棧1
程式執行完畢
棧的應用 漢諾塔
2014年4月23日 漢諾塔 include brief 把第n個盤子從位置a移動到位置b param n 盤子的編號 param a 源位置 param b 目標位置 return void move int n,char a,char b brief 漢諾塔 param n 盤子的個數 para...
棧的應用 漢諾塔遊戲
他作為乙個理科生是嚴謹的,他認為天才與否,取決於最終達到的高度。一些事情不過比別人早幾年做到,算不上什麼天才。樓天成 棧 stack 它的結構為lifo last in first out 後進先出。如圖所示 漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了...
棧實現 漢諾塔 操作是否符合規範
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧...