#include <stdio.h>
/*
algorithm explanation
use following formulas to calculate average value of n numbers(a1,a2,...,an):
1. average(n)=(a1 + a2 + ... + an)/n;
2. average(n)=a1/n + a2/n + ... + an/n;
┌ 0 (n < 1)
│
3. average(n)=┤
│
└ average(n-1) + (an - average(n-1))/n (n>0)
formula 3 equal to : average(n) = (average(n-1)*(n-1) + an)/n
here, formula 3 is the best one for computer to calculate average value.
*/
double avr_loop(double *a, int n)
{
double avr=.0L;
int i;
for (i=0; i<n; i++)
{
avr+=(a[i]-avr)/(i+1);
}
return avr;
}
double avr_rcv(double *a, int n)
{
static double avr=.0L;
if (n==0)
return a[0];
avr = avr_rcv(a, n-1);
return (avr + (a[n-1]-avr)/n);
}
/*
void main()
{
double a[6]={.1L,.2L,.3L,.4L,.5L,.6L};
printf("average: % lf,%lf", avr_loop(a,6),avr_rcv(a,6));
}*/