问答题 已知R[0…n-1]为整型数组,试设计实现下列运算的递归算法: (1)求数组R中的最大整数; (2)求n个整数之和; (3)求n个整数的平均值。
【正确答案】本题属于简单的分治法的递归实现,关于递归和分治法相关问题请看《数据结构高分笔记》中的特别章讲解:考研中某些算法的分治法解释。 实现代码如下: int maxdata(int R[],int n) //求R[0]到R[n]共n+1个元素中的最大值 { int m; if(n==0) return R[0]; else { m=maxdata(R,n-1); if(R[n]>m) return R[n]; else return m; } } int sum(int R[],int n) //求R[0]到R[n]共n+1个元素之和 { if(n==0) return R[0]; else return(R[n]+sum(R,n-1)); } double avg(int R[],int n) //求R[0]到R[n]共n+1个元素的平均值 { if(n==0) return R[0]; else return(R[n]+n*avg(R,n-1))/(n+1); }
【答案解析】