一直懷疑網路上那些河內塔的 recursive 那麼難懂 , 就算程式寫出來了 ,

是否真的表示真的完全了解這短短三行核心的真正精神?!

 

今天看到不同的解法,超簡單 :

N 是盤子的個數  A:起始柱  B:輔助柱  C:目標柱

N 如果是奇數 , 那麼最上面那個稱為 "奇數盤" ,  次一個為 "偶數盤" 以此類推

N 如果是偶數 , 那麼最上面那個稱為 "偶數盤" ,  次一個為 "奇數盤" 以此類推

奇數盤移動順序必定是:  A->C->B->A

偶數盤移動順序必定是:  A->B->C->A

只要 注意 "同一個盤子不能連續移動兩次" 以及 "大的盤子不能放在小的盤子上頭"

要移動哪個盤子就很容易判斷 ,  該盤子是 "偶數盤" 或是 "奇數盤" 去移動該盤 .

 

就這樣簡單....比遞迴好懂太多了 !!!!

 

 

創作者介紹
創作者 hedgezzz 的頭像
hedgezzz

hedgezzz的部落格

hedgezzz 發表在 痞客邦 留言(0) 人氣()