Необходимо найти F(19), можно продолжать решать задачу таким , постепенно дойдя до F(1), но мы замечаем, что в дальнейшем, будем идти только по нечетным значениям n (F(17), F(15), F(13) и тд)
Тогда, что бы найти F(19) сразу запишем итоговую формулу
Var mas:array[1..1000, 1..1000] of integer; N,M,i,j,k:integer;
Begin Writeln('Введите размер матрицы N*M'); Write('N = '); readln(N); Write('M = '); readln(M);
if (M>1000) or (N>1000) or (M<1) or (N<1) then Writeln('Ошибка, указанные значения выходят за пределы матрицы') else Begin Writeln('Введите элементы матрицы');
k:=0; for i:=1 to N do for j:=1 to M do Begin readln(mas[i,j]); if (mas[i,j] mod 2 = 0) then k:=k+1; end;
Writeln(); Writeln('Исходная матрица');
for i:=1 to N do Begin for j:=1 to M do Begin Write(mas[i,j], ' ') end; Writeln(); end;
Writeln(); Writeln('Количество четных элементов = ',k); end;
2074
Объяснение:
Перед нами рекурсивная функция, решаем с подстановки значения.
1) Вызывается F(24), n = 24
n - четно, значит F(24) = 24 + 2 + F(24-1) = 26 + F(23)
Необходимо найти F(23)
2) F(23), n = 23
n - нечетно, значит F(23) = 2*F(23-2) = 2 * F(21)
Необходимо найти F(21)
3) F(21), n = 21
n - нечетно, значит F(21) = 2*F(21-2) = 2*F(19)
Необходимо найти F(19), можно продолжать решать задачу таким , постепенно дойдя до F(1), но мы замечаем, что в дальнейшем, будем идти только по нечетным значениям n (F(17), F(15), F(13) и тд)
Тогда, что бы найти F(19) сразу запишем итоговую формулу
F(19) = 2 * F(17) = 2 * 2 * F(15) = 2 * 2 * 2 F(13) = 2 * 2 * 2 *2 F(11) = 2*2*2*2*2*F(9)= 2*2*2*2*2*2*F(7) = 2*2*2*2*2*2*2F(5) = 2*2*2*2*2*2*2*2F(3) = ( 2^9)F(1) = 2^9 = 512
Тогда идем в обратную сторону, возвращаемся к шагу три, находим F(21) = 2 * F(19) = 2 * 512 = 1024
F(23) = 2 * F(21) = 2048
F(24) = 26 + F(23) = 26 + 2048 = 2074
uses crt;
Var mas:array[1..1000, 1..1000] of integer;
N,M,i,j,k:integer;
Begin
Writeln('Введите размер матрицы N*M');
Write('N = ');
readln(N);
Write('M = ');
readln(M);
if (M>1000) or (N>1000) or (M<1) or (N<1)
then
Writeln('Ошибка, указанные значения выходят за пределы матрицы') else
Begin
Writeln('Введите элементы матрицы');
k:=0;
for i:=1 to N do
for j:=1 to M do
Begin
readln(mas[i,j]);
if (mas[i,j] mod 2 = 0) then k:=k+1;
end;
Writeln();
Writeln('Исходная матрица');
for i:=1 to N do
Begin
for j:=1 to M do
Begin
Write(mas[i,j], ' ')
end;
Writeln();
end;
Writeln();
Writeln('Количество четных элементов = ',k);
end;
readln;
end.