汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。
对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:
如果a只有一个圆盘,可以直接移动到c;
如果a有n个圆盘,可以看成a有1个底盘 + (n-1)个圆盘,首先需要把 (n-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(n-1)个圆盘移动到c。
第一步:将 n-1 个盘子从 a 经过 c 搬运到 b,即move(n-1, a, c, b)
第二步:将 第 n 个盘子 从 a 移到 c,即 PRint a, '-->', c
第三步:将 n-1个盘子从 b 经过 a 搬运到 c,即move(n-1, b, a, c)
新闻热点
疑难解答