程序设计综合实践教学课件2-1 栈与递归.pptxVIP

  • 1
  • 0
  • 约2.76千字
  • 约 13页
  • 2021-10-13 发布于安徽
  • 举报

程序设计综合实践教学课件2-1 栈与递归.pptx

第二章 递归程序设计;一、栈与递归;1.1汉诺塔问题递归程序设计 汉诺(Hanoi)塔问题:假设有命名为A、B、C的三个塔柱,初始时,在塔柱A上插有n个直径大小各不相同的圆盘,从上往下,圆盘从小到大编号为1、2、3、···n,要求将A柱上的圆盘移至塔柱C,可借助塔柱B,用程序模拟搬盘子过程。圆盘移动必须遵守下列规则: 1:每次只能移动一个圆盘; 2:圆盘可以插在任意一个塔柱上; 3:任何时刻都不能将一个较大的圆盘放在一个较小的圆盘上。;用分治法解决。 对于具有n个圆盘的汉诺塔问题,形参x、y、z代表三个塔柱,将x柱上的圆盘移至塔柱z,可借助塔柱y。问题分析如下: n等于1时只需直接将圆盘从x柱移至z柱即可; n大于1时,我们分三步完成: Step1:借助z塔柱,将x塔柱上的n-1个圆盘按照规定移至到y塔柱; Step2:将x塔柱上的一个圆盘由x柱移至z柱; Step3:借助x塔柱,将y塔柱上的n-1个圆盘按规定移至到z塔柱;//Ex2.1 汉诺塔问题完整样例 1 #include stdio.h 2 //将n个盘从x柱搬至z柱,可借助y柱 3 void Hanoi (int n, char x, char y, char z); 4 5 int main () 6 { int n; //盘子数量 7 scanf( %d,

文档评论(0)

1亿VIP精品文档

相关文档