由汉诺塔所引出的

最近在学C嘛,在递归这一节,老师举到了汉诺塔作例子。在目瞪口呆于居然用这么少的代码便能实现以至于感叹递归是神的同时,我在代码里加了一个统计次数的功能。
(代码写得比较烂不要在意)
运行程序,随便输几个数,然后……我好像发现了什么奇奇怪怪的东西。

应该能发现,如果将层汉诺塔的移动次数记为
,那么应该有
结论有了,接下来该写证明过程了,当然其实也不是很难。
不妨将汉诺塔的三根轴记为
记层汉诺塔移动次数为
,易见
,
注意到,层汉诺塔的解法可拆解为三步:
①将上面的层汉诺塔从
轴移动到
轴
②将最下面的片从
轴移动到
轴
③将层汉诺塔从
轴移动到
轴
易见①③需要的步骤均为次,而②需要
次
故而
可以通过凑系数得解
让我想起了高中的数学题(
两边同时加,有
,
由此可见是以
为首项,
为公比的等比数列。
,
证明完毕。