您的位置:首页 > 其它

递归实现数组中求最值和求和的算法

2014-03-12 21:27 441 查看
翻看一本非常基础的数据结构实验指导书,看到了递归部分中的一个小题目,异常的简单,但还是想总结一下自己对算法重新学习的感受和对递归算法的题解。

题目的要求是:

已知R[1..n]为整形数组,设计实现递归的算法:(1)求出R中的最值

    (2)求出R中N个数的和

     (3)R中N个数的平均值

代码的实现:

#include<iostream>
using namespace std;
int sum(int a[],int n){//递归求整
if(n==1){
return a[0];
}
else{
return (sum(a,n-1)+a[n-1]);
}
}
int MaxValue(int a[],int n){//递归求最大值
if(n==1){
return a[0];
}
else{
if(MaxValue(a,n-1)<a[n-1]){
return a[n-1];
}
else{
return MaxValue(a,n-1);
}
}
}
int MinValue(int a[],int n){//递归求最小值
if(n==1){
return a[0];
}
else{
if(MinValue(a,n-1)<a[n-1]){
return MinValue(a,n-1);
}
else{
return a[n-1];
}
}
}
float Average(int a[],int n){//平均值,不用递归,声明为float型
int s=sum(a,n);
return s/n;}
void main(){
int a[10]={1,2,3,4,56,7,8,0,9,13};
int sumer=sum(a,10);
cout<<"和是"<<sumer<<endl;
int max=MaxValue(a,10);
cout<<"最大值是"<<max<<endl;
int min=MinValue(a,10);
cout<<"最小值是"<<min<<endl;
float arv=Average(a,10);
cout<<"平均值是"<<arv<<endl;
}
运行结果:



反思:最后的平均数不准确,需要改正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: