Я пишу код C для улучшения обучения рекурсивным функциям. Моя функция должна вычислить среднее значение набора чисел, полученных в массиве. Мне нужно вычислить сумму чисел в массиве, даже чтобы вернуть его, то же самое я должен вычислить среднее значение внутри функции (я напечатал его), но когда я делаю возврат, основная функция всегда получает мусорное число .
Это мой код:
#include <stdio.h>
#include <stdlib.h>
float sum (int array[], int n)
{
float f; float z=n;
if (n==0) return (array[n]);
f=(array[n]+sum(array,n-1));;
return f/z;
}
int main ()
{
int *array, n, i;
float result;
printf("\nDimension de tu array: ");
scanf("%d", &n);
array=(int *) malloc (n*sizeof (int));
for (i=0; i<n; i++)
{
printf("Valor en A[%d]: ", i+1);
scanf("%d", &array[i]);
}
result=sum(array,n);
printf("\n\nEl promedio es igual a: %f ", result);
}
float
, если у вас его нет из-за нехватки места или около того. Естественный тип с плавающей запятой —double
, константы, как вы их обычно пишете (1.0
,1E-23
), имеют типdouble
. (2) Не применяйте возвратmalloc
, однажды это может скрыть тот факт, что вы забыли включитьstdlib.h
. - person Jens Gustedt   schedule 08.11.2011