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