關於遞迴 漢諾塔為例

2021-04-12 19:10:25 字數 561 閱讀 7830

記得上學時候當時解漢諾塔問題是沒有解出來的,這幾天看遞迴,想起來了,再嘗試一下吧.想啊想,想啊想,很遺憾,最後還是沒能出來正確的結果,很是鬱悶. 

研究了一下別人解法,發現我的錯誤在於歸納n與n-1的情況是出錯了,也就是如何用n-1來表示n.其實現在看做好遞迴有兩點比較關鍵,一時總結好n的表示式,用n-1表示;第二就是結束條件要寫好.就是這兩條了,其實遞迴的思路比較簡單,難就難在這兩點.漢諾塔之所以不太好解,也在於題目本身並沒有顯式給出n與n-1的關係.

漢諾塔解法如下(c#):

string road;

private void hanoi(int n,char a,char b,char c)

if(n==1)

moveto(a,c);

return;

else

hanoi(n-1,a,c,b);

moveto(a,c);

hanoi(n-1,b,a,c);

private void moveto(char a,char c)

road=road+a.tostring()+"->"+b.tostring();

遞迴演算法 以漢諾塔程式為例

遞迴是演算法中最基礎也是最重要的一部分。但每次我對遞迴的理解都不夠透徹,這次就以漢諾塔程式為例,加深自己對遞迴的理解。漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下...

漢諾塔 遞迴

個人理解遞迴函式的基本要求就是,函式中呼叫函式本身,滿足特定的條件後返回。include include include include include include include include include include include include include 標頭檔案引用的較多...

遞迴漢諾塔

遞迴問題 遞迴要有三個要素 1.遞迴結束條件 2.遞迴結束時的處理 3.抽取重複的邏輯,剝離外殼 重點都在這一步 漢諾塔問題 把圓盤從下面開始按大小順序重新擺放在另一根柱子上。且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。首先,要搞這個編碼得要知道漢諾塔的解題思路 1.把a塔上...