
A杆 上有 个 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C杆 。
按照递归的惯例,我们先从递推,即第 1 种情况、第 2 种情况等,到递归。所以我们现在来看具体的情况。
在那之前,我们需要定义一个函数,方便思考:TOH(n, from, via, to)
n 为初始的穿孔圆盘数量。
A,B,C 分别从左到右代表 3 根柱子。
| A | B | C |
|---|---|---|
| 1 | 2 | 3 |
from, via, to 输入的是柱子的序号,意思是从 from 通过 via 移动到 to。
TOH(n, A, B, C)TOH(1, A, B, C)
TOH(2, A, B, C)TOH(1, A, C, B)。TOH(1, B, A, C)。
TOH(3, A, B, C)TOH(2, A, C, B)。TOH(2, B, A, C)。
TOH(n, A, B, C)TOH(n-1, A, C, B)。TOH(n-1, B, A, C)。1
2void TOH(int n, int a, int b, int c)
3{
4