当前步数
0
最优步数
7
盘子数
3
游戏规则
1. 每次只能移动一个盘子
2. 只能取柱子最上面的盘子
3. 大盘子不能放在小盘子上面
最少步数公式
移动 n 个盘子,最少需要 2n − 1 步
递归推导
设 T(n) = 移动 n 个盘子的最少步数
T(1) = 1(直接搬过去)
对于 n ≥ 2,分三步:
① 把上面 n−1 个盘子移到中间的柱子 B:T(n−1) 步
② 把最大的盘子移到目标柱子 C:1 步
③ 把 B 上的 n−1 个盘子移到 C:T(n−1) 步
所以:
T(n) = 2 × T(n−1) + 1
T(1) = 1
T(1) = 1
数学推导
两边加 1 凑等比数列:
T(n) + 1 = 2[T(n−1) + 1]
= 22[T(n−2) + 1]
= ...
= 2n−1[T(1) + 1]
= 2n−1 × 2
= 2n
= 22[T(n−2) + 1]
= ...
= 2n−1[T(1) + 1]
= 2n−1 × 2
= 2n
因此:
T(n) = 2n − 1
各层最少步数
| n | 2n−1 |
|---|---|
| 1 | 1 |
| 2 | 3 |
| 3 | 7 |
| 4 | 15 |
| 5 | 31 |
| 6 | 63 |
| 7 | 127 |
| 8 | 255 |