三峡大学计算机与信息学院数据结构课件 第3章.pptVIP

  • 4
  • 0
  • 约1.28万字
  • 约 96页
  • 2019-05-13 发布于香港
  • 举报

三峡大学计算机与信息学院数据结构课件 第3章.ppt

1) 消除递归的原因 其一:有利于提高算法时空性能,因为递归执行时需要系统提供隐式栈实现递归,效率低且费时。  其二: 无应用递归语句的语言设施环境条件,有些计算机语言不支持递归功能,如FORTRAN、 C语言中无递归机制 。 其三:递归算法是一次执行完,这在处理有些问题时不合适, 也存在一个把递归算法转化为非递归算法的需求。 2) 简单递归(尾递归和单向递归)消除 在简单情况下, 将递归算法可简化为线性序列执行, 可直接转换为循环实现。 例:斐波那契数列 图3.11 Fib(5)递归调用过程示意 intFib(intn) {   if(n==0||n==1)return n;    /*递归出口*/   else return Fib(n-1)+Fib(n-2); /*递归调用*/ }   图3.11中的15个点表示15次运算。如果合并重合点,按图3.12所示粗黑线循环实现计算,共需进行5次运算。 图3.12 Fib(5)循环调用过程示意 1) 无括号算术表达式求值 表达式计算 程序设计语言中都有计算表达式的问题, 这是语言编译中的典型问题。  (1) 表达式形式: 由运算对象、 运算符及必要的表达式括号

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档