Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

想請問一個程式寫法 關於河內塔 急需

1.[towers of Hanoi]一共有3跟套桿且在第一跟套趕上有64個直徑大小不同的圓盤,當你從下往上看時,圓盤呈現由大而小的之順序排列。據說,曾侶們根據下列的規則,將圓盤郵遞一根套桿一到第三跟套桿上:

a 一次只能移動一個圓盤

b 任何一個圓盤都不能放在直徑比它小的圓盤上,編寫一個遞洄的函數,將完

成這項任務所需要的移動順序印出。

我試過遞迴的寫法 可是很多地方不太懂

所以寫不出來 ,希望有人能交我一下

謝謝

2 Answers

Rating
  • 2 decades ago
    Favorite 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);

    }

    }

    希望你看得懂我的註解才好~~~

  • 2 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.