參考一下,這是我覺得最簡單可以理解的
http://tw.knowledge.yahoo.com/quest...d=1608110103848試試看 高度(設為 h) h = 3, h = 4, h = 5..... 的河內塔你會發現一個規律
就是 h 為奇數時,第一個盤子都一定會先放到最右邊 (假設一開始全部在左邊)
h 是偶數時,第一個盤子一定會先放到中間
那麼,你就可以發現其中的規律,你試著想想看,h = 3 的河內塔將 "最小的盤子" 移到最右邊時
和 h = 4 河內塔將 "最上面的兩個小盤子" 依照規律移動到 最右邊時,把這兩個小盤子 "群組化" 當成是一個小盤子
就會發現,h = 4 移動第三次與 h = 3 移動一次 的感覺是非常像的,這就是上面知識+提到 的想法
當河內塔其中一個桿子是空的時候,要移動比較小的那堆時,可以想像成,整個河內塔要移動的只有 那幾個小盤子 (因為不管怎麼移動這幾個小盤子,都不會違反 小的要在大的上面)
例如,h = 4 時候,如上圖下面的情況,要把最右邊兩個小盤子準備移動到 第二大的盤子(下一步驟 : 移動到中間桿子)
知道這個規律後,就能用 遞迴 (recursive) 或是一般的 迴圈 來跑程式了