【发布时间】:2013-11-11 08:42:17
【问题描述】:
我在维基百科中看到了这个解决河内塔的递归算法。有人可以向我解释一下我是如何得到这个算法的递归方程的吗?
递归解
- 标记钉子 A、B、C - 这些标签可能会以不同的步长移动
- 设 n 为磁盘总数
- 从 1(最小,最顶部)到 n(最大,最底部)对光盘进行编号
将 n 个圆盘从钉 A 移到钉 C:
- 将 n-1 个圆盘从 A 移动到 B。这使得圆盘 n 单独留在钉 A 上
- 将磁盘 n 从 A 移动到 C
- 将 n-1 个圆盘从 B 移动到 C,使它们位于圆盘 n 上
以上是递归算法,要执行步骤 1 和 3,对 n-1 再次应用相同的算法。整个过程是有限数量的步骤,因为在某些时候,n = 1 时需要该算法。这一步,将单个圆盘从钉 A 移动到钉 B,是微不足道的。
【问题讨论】:
-
T(n) = 三个步骤的总和...请努力。
标签: algorithm recursion towers-of-hanoi