РУҚА
16

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

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

Ниже на пяти языках программирования записан рекурсивный алгоритм F. При вызове F(n), если n > 2, сначала выводится значение n, затем вызываются F(n / 2) с целочисленным делением и F(n − 1).

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

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

4 шага
1

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

$$7$$
2

Вызов F(3) выводит 3, а вызовы F(1) и F(2) ничего не выводят, поскольку их аргументы не больше 2.

$$7\,3$$
3

После завершения F(3) выполняется F(6). Он выводит 6, затем вызывает F(3), который выводит 3.

$$7\,3\,6\,3$$

Далее выполняется F(5): выводится 5. После него выполняется F(4), выводится 4, затем F(3), выводится 3.

$$7\,3\,6\,3\,5\,4\,3$$
Ответ
7363543
7363543
так ответ выглядит в бланке

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

Перепутать порядок рекурсивных вызовов F(n // 2) и F(n − 1).

Продолжать рекурсию для n ≤ 2.

Разделять числа пробелами или другими символами.

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

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

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

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