4第四章栈、队列和递归【2014-2】概念.ppt

另一个典型的例子是汉诺塔问题的求解。汉诺塔问题是: 设有3根标号为x,y,z的柱子,在x柱上放着n个盘子,每一个都比下面的略小一点,要求把x柱上的盘子全部移到z柱上。移动的规则是: (1)一次只能移动一个盘子; (2)移动过程中大盘子不能放在小盘子上面; (3)在移动过程中盘子可以放在x,y,z的任意一个柱子上。 x y z 1 2 3 对这个问题我们用递归方法分析考虑如下。 设盘子的总数为n,我们给x柱上的盘子从上至下编号为1到n。 当n=1时,问题可直接求解,即我们可直接把x柱上的盘子移到z柱上; 当n1时,移动由以下三步组成: ?(1)用z柱做过渡把A柱上的 n-1 个盘子移到y柱上; (2)把x柱上的最后一个盘子移到z柱上; (3)用x柱做过渡把y柱上的 n-1 个盘子移到z柱上。 x y z 1 2 3 图4-3-1 n=4的汉诺塔问题移动过程 (1)用z柱做过渡把x柱上的n-1个盘子移到y柱上; (2)把x柱上的最后一个盘子移到z柱上; (3)用x柱做过渡把y柱上的n-1个盘子移到z柱上。 上述n个盘子的汉诺塔问题的递归求解思路是: 把移动n个盘子的汉诺塔问题归结为移动n-1个盘子的汉诺塔问题, 把移动n-1个盘子的汉诺塔问题归结为移动n-2个盘子

文档评论(0)

1亿VIP精品文档

相关文档