16

Решение: Рекурсивный алгоритм F

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

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

Python
1def F(n):
2    if n > 0:
3        print(n)
4        F(n - 3)
5        F(n // 2)
Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

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

4 шага
1

Вызов $F(7)$ выводит число $7$, затем последовательно вызывает $F(4)$ и $F(3)$.

$$F(7) \to 7,\ F(4),\ F(3)$$
2

Вызов $F(4)$ выводит $4$. Вызов $F(1)$ выводит $1$, а затем вызов $F(2)$ выводит $2$ и после вызова $F(-1)$ вызывает $F(1)$, который выводит $1$.

$$F(4) \to 4,1,2,1$$
3

Вызов $F(3)$ выводит $3$, затем выполняет $F(0)$, который ничего не выводит, и $F(1)$, который выводит $1$.

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

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

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

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

Выполняют второй рекурсивный вызов до полного завершения первого.

Учитывают вывод для вызовов с неположительным аргументом.

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

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

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

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

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