G(9) = 9! = 362880
Объяснение:
Из условия задачи видно, что функция G рекурсивная, с условием завершения рекурсии при G(1) = 1
Тогда найдём значение при n = 9
Для удобства я буду обозначать -> как вхождение в рекурсию:
G(9) = G(8) * 9 -> G(7) *8 -> G(6) * 7 -> G(5) * 6 -> G(4) * 5 -> G(3) * 4 -> G(2) * 3 -> G(1) * 2 -> G(1) - это последовательность вызовов данной рекурсии, вглядевшись в которую можно увидеть факториал, откуда
G(9) = 9! = 362880
Теперь же пройдёмся обратно по рекурсии, где -> обозначает выход из рекурсии
G(1) = 1 -> G(2) = 1 * 2 = 2 -> G(3) = 2 * 3 = 6 -> G(4) = 6 * 4 = 24 -> G(5) = 24 * 5 = 120 -> G(6) = 120 * 6 = 720 -> G(7) = 720 * 7 = 5040-> G(8) = 5040 * 8 = 40320 -> G(9) = 40320 * 9 = 362880
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ArrRandom(ReadInteger('n='),1,300).Println.
Where(k->(k>=100) and ((k mod 100) div 10=0));
if s.Count>0 then Writeln(s.Max) else Writeln('Нет элементов')
end.
Пример
n= 15
76 283 171 140 113 65 185 35 202 42 93 51 205 76 138
205
2. А так по-прежнему учат в большинстве школ. Стиль "80-х годов века". Долго, длинно, можно наделать ошибок, но по-другому эти учителя сами не могут.
const
nn=100;
var
i,n,max:integer;
a:array[1..nn] of integer;
begin
Write('n=');
Read(n);
Randomize;
max:=0;
for i:=1 to n do begin
a[i]:=Random(300)+1;
Write(a[i],' ');
if (a[i]>=100) and ((a[i] mod 100) div 10=0) then
if a[i]>max then max:=a[i]
end;
Writeln;
if max>0 then Writeln(max)
else Writeln('Нет элементов')
end.
Пример
n=15
219 68 131 115 104 169 80 288 143 108 124 214 50 101 1
108