Задание 16 ЕГЭ по информатике · 8C5262

Порядок вывода рекурсивного алгоритмаПовышеннаяКЭС 3.7КЭС 3.16
Ниже записан рекурсивный алгоритм F на языке Python.

def F(n):
if n > 2:
F(n - 1)
F(n // 2)
print(n)


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

Показать ответ
3453637
Подсказки (3)
  1. Какие два рекурсивных вызова выполняются внутри F(n) до вывода самого значения n?
  2. Сначала полностью выполняется F(n−1), затем F(n//2), и только после этого выводится n.
  3. Для F(7) последовательность вывода: из F(6) получается 345363, затем из F(3) — 3, после чего выводится 7.
Решение
1. Вызов F(7) сначала запускает F(6), затем F(3), а число 7 выводится последним.
F(7)→F(6), F(3), 7

2. Разбираем вызов F(6): сначала выполняется F(5), затем F(3), после чего выводится 6.
F(6)→F(5), F(3), 6

3. Вызов F(5) даёт F(4) и F(2). Вызов F(2) ничего не выводит, поэтому сначала получаем результат F(4), затем выводится 5.
F(5)→F(4), F(2), 5

4. Вызов F(4) даёт F(3) и F(2), после чего выводится 4. Вызов F(3) выводит 3, так как оба его рекурсивных вызова имеют аргументы, не превышающие 2.
F(3)→3;F(4)→3,4

5. Следовательно, F(6) выводит 345363, а весь вызов F(7) — 345363, затем 3, затем 7.
345363+3+7=3453637
Частые ошибки
  • Выводят число до выполнения рекурсивных вызовов.
  • Забывают, что вызовы выполняются слева направо: сначала F(n−1), затем F(n//2).
  • Учитывают вывод для аргументов n≤2, хотя условие рекурсии при них не выполняется.

Источник: Открытый банк ФИПИ

Похожие задания

16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: F(n - 1) print(n) F(n - 2) Запишите…Порядок вывода рекурсивного алгоритма · 4E277016Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: F(n - 2) F(n // 3) print(n) Запишите…Порядок вывода рекурсивного алгоритма · 55D63C16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): print(n, end='') if n >= 6: F(n - 1) F(n - 3)…Порядок вывода рекурсивного алгоритма · 696B0616Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 2: print(n) F(n - 1) F(n // 2) Запишите…Порядок вывода рекурсивного алгоритма · 82EE4916Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: print(n) F(n - 1) F(n - 2) Запишите…Порядок вывода рекурсивного алгоритма · 914B1816Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: F(n - 4) F(n // 2) print(n) Запишите…Порядок вывода рекурсивного алгоритма · 93363516Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: print(n) F(n // 3) F(n - 2) Запишите…Порядок вывода рекурсивного алгоритма · 963C1F16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: F(n - 3) F(n // 2) print(n) Запишите…Порядок вывода рекурсивного алгоритма · A75BAE

Нужен репетитор по информатике?

Посмотрите репетиторов, которые ведут занятия в Precettore, или оставьте заявку — подберём сами.

Репетиторы по информатике

Подбор репетитора

Напишите, что нужно, — команда Precettore подберёт репетитора и свяжется с вами.

Готовьтесь к ЕГЭ по информатике в Precettore

Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.