Да это самый удобный и наглядный Рисуем дерево вызовов. Понимаем, что если функция вызвалась с числом <=0, то печатается одна звезда, затем на этой ветке рекурсия останавливается. Если же функция вызвалась с параметром > 0, То печатается 2 звезды и возникают новые две ветки рекурсивных вызовов. Прилагаю рисунок, красными точками отмечены звезды, печатающиеся при конкретном вызове функции. ответо будет являться общее количество таких точек. Важно понять, что при наличии идентичных веток можно посчитать результат для такой ветки один раз и использовать его для других таких же.
ответ: 31.
Объяснение:
Объяснение:
a - массив;
sum - сумма элементов массива;
avrg - среднее значение.
Пример алгоритма решения задачи:
Заполняем массив (например, случайными числами).
Переменной sum изначально присваиваем значение 0.
Вычисляем сумму элементов, в цикле перебирая массив и добавляя значение каждого к переменной sum.
Находим среднее арифметическое, путем деления суммы на количество элементов (хранится в константе N).
Выводим на экран весь массив и найденное среднее значение. (Это не обязательно, но необходимо для удобства.)
Снова в цикле перебираем массив. Если очередной элемент больше среднего арифметического, то выводим этот элемент на экран.
const N = 10;
var
a: array[1..N] of integer;
i: byte;
avrg: real;
sum: integer;
begin
randomize;
for i:=1 to N do a[i]:=random(50)+1;
sum := 0;
for i:=1 to N do sum := sum + a[i];
avrg := sum/N;
// весь массив
for i:=1 to N do write(a[i]:3);
writeln;
writeln('Среднее арифм.: ',avrg:4:2
for i:=1 to N do if a[i]>avrg then write(a[i]:3);
writeln;
end.
Пример выполнения программы:
7 36 21 48 33 46 7 17 19 41
Среднее арифм.: 27.50
36 48 33 46 41