递归实现数组中求最值和求和的算法
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;
}
运行结果:
反思:最后的平均数不准确,需要改正。
题目的要求是:
已知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;
}
运行结果:
反思:最后的平均数不准确,需要改正。
相关文章推荐
- 如何用递归实现数组求和
- 如何用递归实现数组求和
- 如何递归实现数组求和
- 用递归实现数组求和
- 问题:如何用递归实现数组求和?
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- [算法] 循环有序数组查找非递归实现
- 使用递归实现数组求和示例分享
- java的递归任务和分治算法实现大数组数据求和
- 递归和非递归实现数组求和
- [算法] 循环有序数组查找递归实现
- 递归实现数组求和
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- 求数组全排列算法的递归实现
- 如何用递归实现数组求和
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- 递归实现数组求和
- 【算法】快速排序算法(递归实现 从小到大排列) 排序范围(0~n-1) n为数组元素个数
- 算法:Python递归实现走迷宫
- 【LeetCode-面试算法经典-Java实现】【215-Kth Largest Element in an Array(数组中第K大的数)】