Как пользоваться Поиском

поиск по сайту
логин

пароль

регистрация     
забыли пароль?

Помощь сайту

Вопросы » Информатика, Логика » Задание 16 ЕГЭ 2022 по информатике. Рекурсии.

Задание 16 ЕГЭ 2022 по информатике. Рекурсии.

создана: 14.02.2023 в 10:49
................................................

 ( +3192 ) 

:

Вар. 1. Алгоритм вычисления значения функции F(n),

где n – целое неотрицательное число, задан следующими соотношениями:

F(0) = 1, F(1) = 3

F(n) = F(n–1) – F(n–2) + 3n, при чётном n > 1
F(n) = F(n–2) – F(n–3) + 2n, при нечётном n > 1

Чему равно значение функции F(40)?

В ответе запишите только целое число.

 

var f: array [0..40] of integer;      
begin
    f[0] := 1;  f[1] := 3;
    for var i:=2 to 40 do
      if (i mod 2=0) then f[i] := f[i-1] - f[i-2] + 3*i
      else f[i] := f[i-2] - f[i-3] + 2*i;
    writeln (f[40]);
end.

 

Вар. 2

F(0) = 1, F(1) = 3
F(n) = F(n–1) - F(n-2) + 3n, при n > 1.    

Чему равно значение функции F(40)? В ответе запишите только целое число.

 Вар.3

F(n) = n + 3, при n ≤ 3
F(n) = F(n – 2) + n, при n > 3 и четном значении F(n-1),
F(n) = F(n – 2) + 2•n, при n > 3 и нечетном значении F(n-1).

Определите сумму значений, являющихся результатом вызова функции для значений n

в диапазоне [40; 50].

 

Вар. 4

F(0) = 0
F(n) = 1, когда 1 ≤ n < 3,
F(n) = F(n - 1) + F(n - 2), когда n ≥ 3.

Определите четыре последние цифры числа F(47). 

Вар.5

F(0) = 0
F(n) = F(n/2) + 3, при чётном n > 0
F(n) = 2·F(n - 1) + 1, при нечётном n > 0

Сколько различных значений может принимать функция F(n) при n,

принадлежащих отрезку [1; 1000]?

 

Вар. 6

F(0) = 0
F(n) = F(n/2), при чётном n > 0
F(n) = F(n - 1) + 3, при нечётном n > 0

Сколько существует значений n, принадлежащих отрезку [1; 1000], для которых F(n) равно 18? 


var f: array[0..1000] of integer;
var i,kol : integer;
begin
  f[0]:=0;  kol:=0;
  for i:=1 to 1000 do
  begin
      if (i  mod 2 <>0) then f[i]:=f[i-1]+3
         else     f[i]:=f[i div 2]; 
      if f[i]=18 then kol:=kol+1;
   end;
  writeln  (kol);
end.

// С помощью функции
var n, k,s : integer;
function F(n :integer): integer;                   
begin
     if (n=0) then Result := 0;
     if (n mod 2 = 0) and (n >0) then Result := F(n div 2); 
     if (n mod 2 <> 0) and (n >0) then Result := F(n -1) + 3;
end;
   begin
     k:=0;
     for n := 1  to 1000 do  begin
           if F(n)=18 then
           k:=k+1;
        end;
        writeln(k);
end.
  Ответы:

1.  84 2. 126 3. 8508 4. 5073 5. 348 6. 209

7. 59102 8. 32804 17. 15 18. 16 19. 12 20. 131

 ( +3192 ) 
02.12.2021 09:35
Комментировать

F(n) = n, при n ≤ 3

При n > 3:  F(n) = 2*n*n + F(n–1), при чётном n;

F(n) = n*n*n + n + F(n–1), при нечётном n;

Определите  кол-во натур значений n, при которых F(n) меньше, чем 10^7.

var f1,f2,n, k: integer;

begin

  f1:=3;  f2:=2; n:=4; k:=3;  

  write(1, ,f2, ,f1, );

  while ((f1<10000000) and (f2<10000000)) do begin

    f2:= 2*n*n + f1;     n:=n+1;

    f1:=n*n*n + n + f2;  n:=n+1;

    k:=k+2;

    write (f2, ,f1, );    // отладочный вывод всех   f(n) <10^7 

  end;

  if f2>=10000000 then k:=k-1;

  if f1>=10000000 then k:=k-1;

  writeln (k=,k);

end.  

Ответ:  k=92

Программа с рекурсивной функцией  (2-й способ)

var  k : integer;

function F(n :integer): integer;                   

 begin

     if (n=3) then Result := 3;

     if (n mod 2 = 0) and (n >3) then Result := 2*n*n + F(n-1); 

     if (n mod 2 <> 0) and (n >3) then Result := n*n*n + n + F(n-1);

 end;

begin

  k:=3;

  for var n:= 4 to 1000 do 

          if (F(n)< 10000000) then   k+=1

          else break;  

   write(k);

end.

 ( +3192 ) 
02.12.2021 23:29
Комментировать

F(n) = 1, при n < 2,

F(n) = F(n/3) - 1, когда n ≥ 2 и делится на 3,

F(n) = F(n - 1) + 7, когда n ≥ 2 и не делится на 3.

Назовите минимальное значение n, для которого F(n) равно 111.}

 

var  n : integer;

function F(n :integer): integer;                   

begin

  if (n<2) then Result := 1;

  if (n mod 3 = 0) and (n >1) then Result := F(n div 3)-1; 

  if (n mod 3 <>0) and (n >1) then Result := F(n -1) + 7;

end;

begin

     for n := 2  to 100000 do 

        if F(n)=111 then break;

     writeln(n);

end.

Ответ:  32804

Хочу написать ответ