一、 请用递归算法求数组中前n个元素的平均值。 提示: 设ave(n)是求n个元素平均值的函数,根据递归算法

,要找出“n个元素的平均值”与“n-1个元素的平均值”之间的关系(即,找出递归公式),显然有ave(n)=(n-1)*ave(n-1)+a[n-1]/n成立,因为,“n-... ,要找出“n个元素的平均值”与“n-1个元素的平均值”之间的关系(即,找出递归公式),显然有ave(n)= (n-1)*ave(n-1)+ a[n-1]/n成立,因为,“n-1个元素的平均值”ave(n-1)乘以(n-1)就是前n个元素之和,它加上a[n-1]就是n个元素之和(注意:数组元素的下标从0开始计数,所以第n个元素是a[n-1])。至于边界条件是:当n等于1时,ave(1)= a[0]。函数原型:float ave(int n)函数功能:用递归方法求前n元素的平均值函数返回:n元素的平均值
这是我的作业,求大师帮忙。(c语言编程)
展开
 我来答
Monkey家园
2011-02-23 · TA获得超过5635个赞
知道大有可为答主
回答量:1134
采纳率:60%
帮助的人:601万
展开全部
(不必用递推关系,更高效,严格按照你的函数定义):
#include <stdio.h>

float ave(int n)
{
static int tag=n;
float t;
scanf("%lf",&t);
if(n==1)
return t;
else if(tag!=n)
return t+ave(n-1);
else
return (t+ave(n-1))/n;
}

int main()
{
printf("%f",ave(3));/* 输入三个数 回车,自动计算平均值 */
}
kxg405707818
2011-02-23 · TA获得超过1132个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:164万
展开全部
用C编写可以吗?
我假设有全局数组 a[] 平均值需要单精度实型的,那么可以有这个函数

float ave(int n)
{
int i;
float s=0;
for(i=1;i<=n;++i) s+=a[i];
s/=n; return s;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-02-23 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1279万
展开全部
#include<stdio.h>

double ave( double* a, int n );

int main( void )
{
double b[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
double m = ave( b, 5 );
printf( "%f\n", m );

system( "pause" );
}

double ave( double* a, int n )
{
if( n == 0 )
{
return 0;
}
else
{
return ( ave( a, n - 1 ) * ( n - 1 ) + a[ n - 1 ] ) / n;
}
}
从0开始算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式