РУҚА
16

Решение: Рекурсивный вывод чисел

ЕГЭ · Информатика · Задание 16 · Основы программирования
ПовышеннаяФИПИ963C1FКороткий ответ≈ 3 минутыРазбор в 4 шагаОтвет сверен с ключом
Условие

Ниже на пяти языках программирования записан рекурсивный алгоритм F. Если n > 0, алгоритм выводит число n, затем вызывает F при целочисленном делении n на 3, а после этого вызывает F(n − 2). Выполните вызов F(7).

Запишите подряд без пробелов и разделителей все числа в том порядке, в котором они выводятся на экран.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

4 шага
1

При вызове F(7) сначала выводится 7. Затем выполняются вызовы F(7 div 3) = F(2) и F(7 − 2) = F(5).

$$F(7) \to 7,\ F(2),\ F(5)$$
2

Вызов F(2) выводит 2 и выполняет F(0), после чего рекурсия прекращается.

$$F(2) \to 2,\ F(0),\ F(0)$$
3

Вызов F(5) выводит 5, затем F(1) выводит 1, а F(3) выводит 3 и дважды вызывает F(1), каждый раз выводя 1.

$$F(5) \to 5,\ 1,\ 3,\ 1,\ 1$$

Объединяем числа в порядке выполнения рекурсивных вызовов.

$$7\,2\,5\,1\,3\,1\,1$$
Ответ
7251311
7251311
так ответ выглядит в бланке

Где здесь ошибаются

Меняют местами вызовы F(n div 3) и F(n − 2).

Продолжают рекурсию при n ≤ 0.

Записывают разделители между выведенными числами.

Закрепить приёмВ теме «Основы программирования» ещё 159 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 16 ЕГЭ, информатика

Разбор этой задачи разложен на 4 шага: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Основы программирования»: в ней 160 задач, и у каждой есть такой же разбор. Регистрация не нужна.