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

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

题目的要求是:

已知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;
}
运行结果:

反思:最后的平均数不准确,需要改正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值