如何用递归函数求平均值

jackvs 2009-06-06 01:34:27
用递归函数求平均值,只能用一个函数,换言之,用递归函数累加求和后再算平均值的则不算,想了很久没想出来,向大家请教一下。
...全文
765 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxw618 2009-10-23
  • 打赏
  • 举报
回复
学习一下!
koulongfei 2009-06-06
  • 打赏
  • 举报
回复
这么简单行么?应该能实现你所描述的吧.
#include <iostream> 
using namespace std;
double num,n=0.0,k=0.0;
void fun()
{
cin>>num;
k++;
n+=num;
cout<<n/k<<endl;
fun();
}
int main()
{
fun();
return 0;
}
lylm 2009-06-06
  • 打赏
  • 举报
回复
也可处理浮点数,连续内存就好,VC6测试通过

#include <stdio.h>

float average(float *begin, int n)
{
if(n == 1)
return *begin;
return (float)(*begin + average(begin+1, n - 1) * (n - 1)) / n;
}

void main()
{
float arr[]={10.3,20.5,30.6};

float x;

x = average(arr,3);

printf("%f",x);
}
wanyuzhen 2009-06-06
  • 打赏
  • 举报
回复
支持5楼
sean_zhou 2009-06-06
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "conio.h"

int i = 0;
static int n = 10;
float avr = 0.0;

float f(int *a, int i,float avr)
{
if(i < n)
{
avr = (avr*i+a[i])/(i+1);
i++;
printf("%f\n",avr);
return f(a, i, avr);
}
else
return avr;
}

int main()
{
int a[10] = {1, 2, 3,5, 1, 6,1, 6,6, 7};
float avre;
avre = f(a, i, avr);
printf("%f\n",avre);
return 0;
}

有点烦 你试试看。
goodname 2009-06-06
  • 打赏
  • 举报
回复
if(size==1)
return 1;//这里应该是return arr[0];,手误
else
goodname 2009-06-06
  • 打赏
  • 举报
回复
只是示意一下,如果中间出现不能整除的,应该不行。


int sum(int arr[],int size)
{
if(size==1)
return 1;
else
return (sum(arr+1,size-1)*(size-1)+arr[0])/(size);
}

int main()
{
int arr[]={10,20,30};

int x;

x = sum(arr,3);

printf("%d",x);

return 0;
}

pengzhixi 2009-06-06
  • 打赏
  • 举报
回复
不求和求平均值.有难度.
adventurelw 2009-06-06
  • 打赏
  • 举报
回复
问题也太离谱了
要是求n个不相关的数的平均值,基本没戏
如果是求n个连续整数的平均值,返回一个整数,那么大概可以用下面的方法

int ave(int begin, int n)//求begin至begin + n - 1的n个数的平均值
{
if(n == 1)
return begin;
return (begin + ave(begin + 1, n - 1) * (n - 1)) / n;
}

只是大概,未经验证。
而且因为整型除法的原因,不太可能完全精确。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧