前情提要:

  資料結構最近在上 "堆疊 Stack",有鑑於遞迴式的河內塔太好寫而且到處都有答案,所以出了非遞迴的河內塔當作業。

  既然可以用遞迴來寫,就代表它有一定的規律在。觀察規律,是將所有遞迴程式非遞迴化的必經之路。

  Hanoi Tower<- 河內塔圖示

  規則很簡單:把碟子從第一根柱子搬到另一根柱子,一次搬一個碟子而且搬移的時候任一根柱子上的碟子都必須是由大到小疊上去。

 

  假設碟子從左往右依序是 A B C,並且將所有碟子放在A柱子,然後目的地是最右邊的C柱子。  

  STEP 1:

    輸入要搬的總碟子數後,判斷碟子總數是奇數還是偶數。

  STEP 2:

    如果是奇數:

      1. A <=> C

      2. A <=> B

      3. B <=> C

    如果是偶數:

      1. A <=> B

      2. A <=> C

      3. B <=> C

    X <=> Y 的意思是:如果X可以移到Y,就從X移到Y;如果Y可以移到X,就從Y移到X,其餘類推。

    由於碟子不是大就是小,所以每次只會有一種移動方法成立。

  STEP 3:

    想辦法把 STEP 2 寫成迴圈就成啦!

 

2014/10/12 午


 

- 寫程式的方法有很多,關鍵在動腦想、動手做。

arrow
arrow

    紫漓雪 發表在 痞客邦 留言(1) 人氣()