您的位置: 首页 计算机类> 水平考试> 复习资料> 程序员资料
计算机软件水平考试程序员复习资料 全国计算机水平考试复习资料
公务员考试辅导课程

高级语言程序设计知识点六

发布时间:06-20

来 源:

页 数:6页

上一篇:高级语言程序设计知识点二

下一篇:高级语言程序设计知识点八



【例6.6】 用递归实现阶乘计算的函数。
   float rfac(int n) 
   {
   if( n<=1) return 1.0f;
   return n*rfac(n-1) ;
   }
   以计算3! 为例,说明递归函数被调用时的执行过程。设有代码m= rfac(3) 调用函数rfac()。函数调用rfac(3) 的计算过程可大致叙述如下:
        以函数调用rfac(3) 去调用函数rfac() ;函数rfac(n=3) 为计算3*2! ,用rfac(2) 去调用函数rfac();函数rfac(n=2) 为计算2*1!,用rfac(1)去调用函数rfac();函数 rfac(n=l) 计算1! ,以结果1.0返回;返回到发出调用rfac(l) 处,继续计算,得到2! 的结果2.0返回;返回到发出调用rfac(2) 处,继续计算得到3! 的结果6.0返回。
    递归计算n! 有一个重要特征,为求n有关的解,化为求n-l的解,求n-1的解又化为求n-2的解,如此类推。特别地,对于1的解是可立即得到的。这是将大问题解化为小问题解的递推过程。有了1的解以后,接着是一个回溯过程,逐步获得2的解,3的解,……,直至n的解。
【例6.7】 用递归函数实现数组元素的求和计算。
    要采用递归方法计算数组元素的和,可把数组元素的累计和等于当前元素与数组其余元素的和,而对数组其余元素的和通过递归实现。下面的函数定义是这样的解法之一。
  int rsum(int *a, int n) 
  { 
  if( n==0) return 0;/*若数组没有元素,则返回0*/
  return *a+rsum(a+l,n-1);/*当前元素与其余元素的和*/
   } 



Google
 


     

考试信息

热点

课程

更新

©2005-2006 100ksw.com 版权所有 皖ICP备06013378号