汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则:

每次只能移动柱子最顶端的一个圆盘;每个柱子上,小圆盘永远要位于大圆盘之上;

点击开始体验游戏:​​汉诺塔游戏 (gitee.io)​​

由上述分析可以得到f(n)与f(n-1)的关系:

(我们是把n-1个圆盘看成一个整体去分析的)

一.把n-1个圆盘从A(经过C)移到B

二. 把A上第n个圆盘移到C

三: 把B上的(n-1)个圆盘(经过A)移到C

中间的一步是把最大的一个盘子由A移到C上去;A->C

(1)中间一步之前可以看成把A上n-1个盘子通过借助C塔移到了B上,A->B

(2)中间一步之后可以看成把B上n-1个盘子通过借助A塔移到了C上;B->C

进阶题:移动盘子的过程中只能够相邻柱间移动,结论:移动次数:f(n)=3^n-1