三、请用递归算法求数组中前n个元素的平均值。

提示:
设ave(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元素的平均值

求最大: f(x) = max(f(x-1), x)
求和: g(x) = g(x-1) + x
求平均值:这个能递归么... 直接用和除以n吧..
温馨提示:内容为网友见解,仅供参考
无其他回答

已知A【n】为整数数组,编写一个递归算法求其中n个元素的平均值
include<stdio.h>int a[100],n;float digui(int i){ if(i==-1)return 0; return 1.0\/n*a[i]+digui(n-1);}int main(){ int ans,i; scanf("%d",&n); for(i=0;i<n;i++)scanf("%d",&a[i]); printf("%f",digui(n-1)); return 0;} ...

递归求n个整数的平均值
{ if(n==1)\/\/如果只有一个元素的话 return a[0];\/\/它的平均值就是这个元素 else return((float)(aver(a,n-1) * (n-1)+a[n-1])) \/n;} int main(){ int a[3] = {1, 2, 3};printf("%f\\n", aver(a, 3));return 0;} ...

怎么用递归实现一个数组的平均值计算呢?
方法一:定义一个非常大的数组,循环输入并检测输入值,累计求平均。方法二:动态数组,根据有效输入,实时扩展数组地址长度。方法三:把每个数字创建成结构体,构建链表,实现自由扩展和删除。下面我的代码是用方法二写的:include <stdio.h> include <malloc.h> int input(int **nsp);\/\/输入任意个...

已知A[n]为整数数组,试写出递归算法,使之能:求数组A中最大整数;求n个...
平均值也能递归:Avg(n) = ( Avg(n-1) * (n-1) + A[n-1] ) \/ n

求数组中最大值,用递归函数实现
} \/\/每递归一次 数组a就往后偏移一位 也就是剔除前一个较小的值 \/\/并且剩余的数组个数也要相应的减少一个 return larger(a+1, cnt-1);}int main (int argc, char *argv[]){ int a[] = {-2, 0, 99, -3, -55, 7}; printf("max:%d\\n", larger(a, sizeof...

...a[],int n)的一个递归函数计算出数组a中n个元素的平方和并返回_百度...
int f(int a[],int n){if(n<=0) return 0;else return(f(a,n-1)+a[n-1]*a[n-1]);}

...FF(int a【】,int n)”,求出数组a中所有n个元素之积并返回
int abc(int a[],int n){ if(n==0)return a[0];else return a[n-1]*abc(a[],n-2);} 或:int ff(int a[],int n){ int sum=0;int i for(i=0;i<n;i++){ sum+=a[i];} return sum;}

...整数的最大值,求数组整数的和,求数组整数的平均值
int m(int*a,int n){ if(n==0)return a[n];else return a[n]>m(a,n-1)?a[n]:m(a,n-1);}

c语言求整数均值怎么编程
使用数组和函数,可以将一组整数存储在一个数组中,然后定义一个函数来计算数组中元素的和与平均值3 。使用指针和动态内存分配,可以根据用户输入的整数个数,动态分配一段内存空间来存储整数,然后使用指针来遍历和计算平均值4 。使用递归和返回值,可以定义一个递归函数来计算一组整数的和与平均值,每次...

请教一个递归函数,将指定数组中的前K个元素逆序
void invert(int a[], int k){ int t;if( k > 1 ) \/\/这是递归终止条件,只要k==1即要终止而回调。其实填>0 { \/\/也应该不会出错 invert(a+1, k-2);t=a[0]; \/\/每次交换的其实是a[]数组的第0号元素和最后 a[0]=a[k-1]; \/\/一个元素,这里所要交换的a[]数组部分 ...

相似回答