Trending News
Promoted
想請問一個程式寫法 關於河內塔 急需
1.[towers of Hanoi]一共有3跟套桿且在第一跟套趕上有64個直徑大小不同的圓盤,當你從下往上看時,圓盤呈現由大而小的之順序排列。據說,曾侶們根據下列的規則,將圓盤郵遞一根套桿一到第三跟套桿上:
a 一次只能移動一個圓盤
b 任何一個圓盤都不能放在直徑比它小的圓盤上,編寫一個遞洄的函數,將完
成這項任務所需要的移動順序印出。
我試過遞迴的寫法 可是很多地方不太懂
所以寫不出來 ,希望有人能交我一下
謝謝
2 Answers
Rating
- 2 decades agoFavorite Answer
public void hanoi(int hanoi_rings,char a,char b,char c)
{
//迴圈開始
if (hanoi_rings > 0)
{
//從第一根柱移到第三根柱
hanoi(hanoi_rings-1,a,b,c);
//顯示移動紀錄
ex637textarea.append("第 " + hanoi_rings + " 環,從 " + a + " 移動到 " + c + "\n");
//從第二根柱移到第三根柱
hanoi(hanoi_rings-1,b,a,c);
}
}
希望你看得懂我的註解才好~~~
- 牧童叔Lv 72 decades ago
河內塔的遞迴解法我說明如下,但希望你可以自己寫程式出來假設你有 n 個員盤,而圓柱由左至右分別為 A B C,那你要將 n 個圓盤由 A 移到 C 需經過下列三個步驟:將 n-1 個圓盤由 A 移到 B將第 n 個圓盤由 A 移到 C將剩下的圓盤由 B 移到 C看出遞迴的關係了嗎?要完成這個動作,要先將 n-1 個圓盤由 A 移到 B,如此重覆到只有一個圓盤時就可以直接移動了。好好想一想吧
Still have questions? Get your answers by asking now.