16

Решение: Порядок рекурсивных вызовов

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

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

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

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

4 шага
1

При каждом вызове с $n > 2$ сначала выводится значение $n$.

$$F(7) \rightarrow 7$$
2

Затем сначала полностью выполняется рекурсивный вызов $F(n-1)$. Последовательность первого углубления: $7, 6, 5, 4, 3$.

3

После завершения каждого вызова выполняется второй вызов $F(n // 2)$. Вызовы с аргументами $3$ снова выводят число $3$, а вызовы с аргументами $2$ и меньше ничего не выводят.

Объединяя числа в порядке их вывода, получаем последовательность $7, 6, 5, 4, 3, 3, 3$.

Ответ
7654333
7654333
так ответ выглядит в бланке

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

Выполняют второй рекурсивный вызов до вызова $F(n-1)$.

Считают, что вызов функции с аргументом $2$ выводит число.

Записывают числа с пробелами или разделителями.

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

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

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

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