用c语言设计算法,已知A[0…n-1]是一个实数数组,设计一个递归算法,求这n个元素的平均值。
时间: 2024-11-06 13:15:24 浏览: 33
在C语言中,你可以使用递归的方式来计算给定数组A的平均值。递归的基本思想是将大问题分解成小问题并解决它们,直到遇到基本情况,然后将结果合并起来。对于这个情况,基本情况就是数组长度为1的情况,直接返回数组中的唯一元素作为平均值。如果数组长度大于1,则需要先对前n-1个元素求平均,再加上最后一个元素,再除以总元素个数。
下面是简单的递归函数设计:
```c
#include <stdio.h>
double average(int n, double *A) {
// 基本情况:当n为1时,直接返回数组元素
if (n == 1)
return A[0];
// 递归情况:对前n-1个元素求平均,加上第n个元素,然后除以n
else
return (average(n - 1, A) + A[n - 1]) / n;
}
int main() {
int n;
printf("请输入数组的元素个数:");
scanf("%d", &n);
double *A = malloc(n * sizeof(double)); // 分配内存存储数组
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个元素:", i+1);
scanf("%lf", &A[i]);
}
double avg = average(n, A);
printf("数组的平均值为: %.2f\n", avg);
free(A); // 释放内存
return 0;
}
```
阅读全文