2019-10-16做些补充:
其实很简单,有n个盘子,3个柱子,无非就是把n-1个盘子先借助目标柱放到temp柱上,把n从起始柱,挪到目标柱,最后再把n-1个盘子从temp柱,借助起始柱,挪到目标柱上。
以下为原答案:
汉诺塔是一个很有名的益智游戏也是个常见的递归算法的例子。
(说明:下面所述均为参考鱼C工作室的小甲鱼数据结构与算法的课程之后自己所写)
问题描述:
如图有三个盘子针,分别为X、Y、Z。
我们要做的事是:将64个盘子从X针移到Z针。(盘子们肯定是在三个针上来回移动从而达到目的)
要求:每次只能移动一个盘子;
小的盘子必须放在比它大的盘子之上。
抽象一下整体的思路(分为三步):
步骤一:把63个较小的盘子从X针挪到Y针(挪动期间保证小盘在上大盘在下);
步骤二:把第64个也就是最大的盘子挪到Z针;
步骤三:把Y针上的63个盘子挪到Z针上。
但是上述的步骤