16

Решение: Трассировка рекурсивной функции

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

Ниже на пяти языках программирования записан рекурсивный алгоритм $F$. Во всех вариантах алгоритм выводит значение параметра $n$, а затем, если $n \ge 4$, вызывает функцию для $n - 1$ и для целой части от деления $n$ на 2. Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова $F(6)$. Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

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

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

3 шага
1

При каждом входе в функцию сначала выводится её параметр $n$.

$$F(6) \Rightarrow 6$$
2

Для значений $n \ge 4$ сначала выполняется вызов с параметром $n-1$, затем — с параметром $n \mathbin{//} 2$.

$$6 \to 5 \to 4 \to 3 \to 2 \to 2 \to 3$$

Соединяем выведенные числа без пробелов и разделителей.

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

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

Записывают число после завершения рекурсивных вызовов, а не при входе в функцию.

Меняют порядок рекурсивных вызовов $F(n-1)$ и $F(n \mathbin{//} 2)$.

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

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

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

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

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