参考一下,这是我觉得最简单可以理解的
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) 或是一般的 回圈 来跑程式了