Slider

Решение. Задание 11. Досрочный ЕГЭ 2020 года, Информатика

Условие задачи

Ниже на пяти языках программирования записан рекурсивный алгоритм F.

Бейсик Python
SUB F(n)
   IF n > 0 THEN
       PRINT n,
       F(n - 3)
       F(n \ 2)
   END IF
END SUB
def F(n):
     if n > 0:
         print(n)
         F(n - 3)
         F(n // 2)
Алгоритмический язык Паскаль
алг F (цел n)
нач
    если n > 0 то
      вывод n
      F(n - 3)
      F(div(n, 2))
    все 
кон
procedure F(n: integer);
 begin   if n > 0 then
   begin
     write(n);
     F(n - 3);
     F(n div 2)
   end
end;
С++
void F(int n){
     if (n > 0){
         std::cout << n;
         F(n - 3);
         F(n / 2);
     }
}

Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

Решение

Распишем последовательно результаты работы функции:

F(7) 7 F(4) F(3)
F(4) 4 F(1) F(2)
F(3) 3 F(0) F(1)
F(2) 2 F(-1) F(1)
F(1) 1 F(-2) F(0)
F(0)      -
F(-1)     -
F(-2)    -

И запишем результаты, собирая их с конца:

F(1) 1
F(2) 21
F(3) 31
F(4) 4121
F(7) 7412131

Ответ

7412131

Назад