注册 登录
编程论坛 新人交流区

大家好,请教个关于求平均值的递归函数问题!

hei_ke2000 发布于 2007-11-04 15:29, 543 次点击
我的算法:
if (n==1)
t=a[0];
else
t=a[n-1]+Average(a,n-1);
t=t/n;
return t;
但老是调不对
原题如下:
设有整数序列a0,a1.......an-1,给出求平均值的递归函数,函数原型如下:
float Average(int a[],int n);
我的源代码:
#define M 10
void main()
{
float Average(int a[],int n);
int b[M],i;
float ave;
printf("请输入数组b:\n");
for (i=0;i<M;i++)
scanf("%d",&b[i]);
ave=Average(b,M);
printf("平均数是:%.2f\n",ave);
}
float Average(int a[],int n)
{
float t;
if (n==1)
t=a[0];
else
t=a[n-1]+Average(a,n-1);
t=t/n;
return t;
}
3 回复
#2
overcome2007-11-04 16:42
正确的代码是这样的
#include<stdio.h>
#define M 10
void main()
{
float Average(int a[],int n);
int b[M],i;
float ave;
printf("请输入数组b:\n");
for (i=0;i<M;i++)
scanf("%d",&b[i]);
ave=Average(b,M);
ave=ave/M;
printf("平均数是:%.2f\n",ave);
}
float Average(int a[],int n)
{
float t;
if (n==1)
t=a[0];
else
t=a[n-1]+Average(a,n-1);
return t;
}
#3
wdq1972007-11-04 16:59
不明白啊
#4
jxj7772007-11-04 20:27

t=a[n-1]+Average(a,n-1);
t=t/n;
程序结束时,n=1,再除n已不是求平均值了

int m=n;
if (n==1)
t=a[0];
else
t=a[n-1]+Average(a,n-1);
t=t/m;
return t;

1