问一个求平均值的程序

来源:百度文库 编辑:超级军网 时间:2024/04/27 19:03:35


  avr = (avr*i+a)/(i+1);  这个公式如何的出来的?:dizzy:想了半天了,想不出来,只好问问CDer.
  我也很讨厌这个用递归求平均值的作法,不光是别扭,压根就不应该用递归做,而且搞得时空开销反而比循环更大了。


楼下的CDer们既然不知道,那我就暂时放着{:soso_e127:}

这个程序还有更简单的。

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

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

    x = average_sum(arr,3);

    printf("%d",x);

    return 0;
}




  avr = (avr*i+a)/(i+1);  这个公式如何的出来的?:dizzy:想了半天了,想不出来,只好问问CDer.
  我也很讨厌这个用递归求平均值的作法,不光是别扭,压根就不应该用递归做,而且搞得时空开销反而比循环更大了。


楼下的CDer们既然不知道,那我就暂时放着{:soso_e127:}

这个程序还有更简单的。

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

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

    x = average_sum(arr,3);

    printf("%d",x);

    return 0;
}


C语言早不会了.
C语言早就不会了  当时就是学了个皮毛。。。
还好我去北大青鸟学过一个课程,花了2000大洋
楼主啊,既然你要递归,你的限制条件怎么一个都没有啊?!
西北和东南 发表于 2012-7-28 17:37
楼主啊,既然你要递归,你的限制条件怎么一个都没有啊?!
我刚才用2008调试了一下,a[0]值是动态改变的,这个程序是别人写的。我也不喜欢,这个程序本来就不应该用递归写。
程序设计的目的我看懂了,a[0]可以依次取a[0],a[1],a[2],a[3]...的值。这个不用调试,之前分析程序的时候我就应该看出来的。:dizzy:
这个MS是高斯滤波,就是一个滑窗。初始值根据需要设定一个预设值,或者等待系统稳定
不懂的路过
e8098 发表于 2012-7-28 19:45
这个MS是高斯滤波,就是一个滑窗。初始值根据需要设定一个预设值,或者等待系统稳定
发现人才。

弱弱地问下,电磁炉上面可以放压力锅吗
毁灭2012 发表于 2012-7-28 20:37
发现人才。

弱弱地问下,电磁炉上面可以放压力锅吗
8是很清楚。如果压力锅是专门设计的,或者是钢质、不锈钢质的平底锅就可以。铝制的不可以使用,因为铝不导磁。
e8098 发表于 2012-7-28 21:18
8是很清楚。如果压力锅是专门设计的,或者是钢质、不锈钢质的平底锅就可以。铝制的不可以使用,因为铝不导 ...
厉害!
逸仙润之尊仲尼 发表于 2012-7-28 17:29
还好我去北大青鸟学过一个课程,花了2000大洋
又抓住博士卖萌
avr = (avr*i+a)/(i+1);  这式子不好理解? avr 是现在平均值啊 乘以 i 是总值 加a是 i+1个数值 除 i+1 不是平均值么
人才啊
你什么专业
这样算平均数公式是对的,但如果用来对固定集合计算平均的话很蛋疼,效率太低

longxia 发表于 2012-7-29 09:15
avr = (avr*i+a)/(i+1);  这式子不好理解? avr 是现在平均值啊 乘以 i 是总值 加a是 i+1个数值 除 i+1 不是 ...


{:soso_e127:}
  
   我现在看懂了。  之前我卡在这里:子函数的参数传进去以后,这一快看错了,呵呵,每传一个原数组元素地址,都当成是一个新的数组首地址处理,然后公式里面的a[0]就是a[0],a[1],a[2]....了
longxia 发表于 2012-7-29 09:15
avr = (avr*i+a)/(i+1);  这式子不好理解? avr 是现在平均值啊 乘以 i 是总值 加a是 i+1个数值 除 i+1 不是 ...


{:soso_e127:}
  
   我现在看懂了。  之前我卡在这里:子函数的参数传进去以后,这一快看错了,呵呵,每传一个原数组元素地址,都当成是一个新的数组首地址处理,然后公式里面的a[0]就是a[0],a[1],a[2]....了
逸仙润之尊仲尼 发表于 2012-7-28 17:29
还好我去北大青鸟学过一个课程,花了2000大洋
呵呵,我调试之前,没看出来,子函数传进去的是数组的首地址,a[0],a[1],a[2],....依次作数组的第一个元素处理,难怪我笔算愣是算错了。
wxzxf 发表于 2012-7-29 14:06
这样算平均数公式是对的,但如果用来对固定集合计算平均的话很蛋疼,效率太低
是啊。不应该用递归。
zzz6688 发表于 2012-7-29 20:37
是啊。不应该用递归。
只能用来纯粹讨论算法,实际用处貌似没有
LZ 辛苦了
LZ 是个好人
LZ 保重身体
wxzxf 发表于 2012-7-29 21:42
只能用来纯粹讨论算法,实际用处貌似没有
如果需要把avr当数组处理 所有结果保留还是有意义的。。
wxzxf 发表于 2012-7-29 21:42
只能用来纯粹讨论算法,实际用处貌似没有
比如算产量 1月 (1月+2月)/2 (1+2+3)/3 (1+2+3+4)/4
不过实际要这个的 太少了。。。
信号分析会用到
longxia 发表于 2012-7-30 01:31
比如算产量 1月 (1月+2月)/2 (1+2+3)/3 (1+2+3+4)/4
不过实际要这个的 太少了。。。
如26楼所说,信号分析会用到,其实用处大大滴:D
e8098 发表于 2012-7-30 07:32
如26楼所说,信号分析会用到,其实用处大大滴
嗯 别的学科就不知道了 俺就是打酱油的 只想到可能哪做报表会用
longxia 发表于 2012-7-30 07:37
嗯 别的学科就不知道了 俺就是打酱油的 只想到可能哪做报表会用
财务的俺不知道。但是在信号分析中,高斯滤波器干这个事,滤除扰动的,应用广泛
财务的俺不知道。但是在信号分析中,高斯滤波器干这个事,滤除扰动的,应用广泛
乃作信号处理的?
e8098 发表于 2012-7-28 19:45
这个MS是高斯滤波,就是一个滑窗。初始值根据需要设定一个预设值,或者等待系统稳定
你确认吗?这个权值貌似不对啊!
e8098 发表于 2012-7-30 07:42
财务的俺不知道。但是在信号分析中,高斯滤波器干这个事,滤除扰动的,应用广泛
不只信号处理要用,图像处理一样要用。
3483365 发表于 2012-7-30 09:00
乃作信号处理的?
84.俺打杂的,恰好遇到过这个
西北和东南 发表于 2012-7-30 09:10
你确认吗?这个权值貌似不对啊!
这个是用法的一种。可惜俺数学很差,只是拿来使用,不会建模
zzz6688 发表于 2012-7-29 20:36
呵呵,我调试之前,没看出来,子函数传进去的是数组的首地址,a[0],a[1],a[2],....依次作数组的第一个元素 ...
本来就是把这个数组指针后移了,数组名,数组瘦位,数组指针都是一个意思
ghycd 发表于 2012-7-28 23:15
又抓住博士卖萌
你是博士,你全家都是博士
逸仙润之尊仲尼 发表于 2012-7-31 23:57
你是博士,你全家都是博士
  我们家可没有博士也没有脚博士的
ghycd 发表于 2012-8-1 00:14
我们家可没有博士也没有脚博士的
我家也么有
风之恋风之恋 发表于 2012-7-29 22:23
**** 作者被禁止或删除 内容自动屏蔽 ****
这个题目要求用递归计算平均值,所以我只好看看人家怎么写得。  呵呵,之前一直在忙着写别的程序。不可能为这个东西花太多时间。

    这玩意我一开始也是脑子笨,没弄出来。