Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2011, 13:58   #1
sw47
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 18
По умолчанию

Задача
Написать рекурсивную функцию, которая возвращает среднее из n элементов массива чисел.

Решение
Насколько я понял, надо найти среднее арифметическое элементов массива.

Моя рекурсивная функция считает только сумму, а среднее арифметическое вычисляется уже в самой программе при выводе.
Подскажите, как сделать чтобы среднее арифметическое считалось в самой функции.

Код:
program recurs;
type
LinMas=array[1..100] of integer;
var
a:LinMas;
i,n:byte;

Function Summa(N:Byte;A:LinMas):real;
begin
if n=0 then Summa:=0 else summa:=a[n]+summa(n-1,A);
end;
begin
WriteLn('Введите количество элементов массиве');
ReadLn(n);
Randomize;
for i:=1 to n do
 begin
 {a[i]:=-10+Random(90); }
 writeln('Введите элемент');
 readln(a[i]);
 end;
 for i:=1 to n do
 writeln(a[i]);
 readln;
 writeln('Среднее: ',Summa(n,a)/n);
 readln;
end.
Добавил счетчик итераций. Вроде функция работает корректно.
Можно как-то задать рекурсию среднего арифметического математически, без счетчика?

Код:
Function Summa(N:Byte;A:LinMas):real;
const
sc:word=0;
begin
inc(sc);
if n=0 then Summa:=0 else summa:=a[n]+summa(n-1,A);
if sc=n+1 then writeln('Среднее из функции: ',summa(n,a)/n);
end;

Последний раз редактировалось Stilet; 30.03.2011 в 17:39.
sw47 вне форума Ответить с цитированием
Старый 30.03.2011, 15:44   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Предлагаю такой вариант
Код:
Function Summa(N,k:Byte):real;
begin
  If N = 0 then Summa:=0
  else
  summa:=summa(n-1,k)+(a[n]/k);
end;
Где k=n
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи.среднее геометрическое элементов массива.среднее арифметическое каждой строки матрицы Karrina Помощь студентам 0 06.12.2010 18:32
Рекурсивная функция Ангелина-ванила Помощь студентам 2 01.12.2010 10:21
Рекурсивная функция Trinity13 Помощь студентам 8 14.02.2010 18:44
Си++. Рекурсивная функция. Diamond2107 Помощь студентам 6 02.12.2009 19:48