Задание 16 ЕГЭ по информатике · 8C5262
Порядок вывода рекурсивного алгоритмаПовышеннаяКЭС 3.7КЭС 3.16
Ниже записан рекурсивный алгоритм F на языке Python.
Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
def F(n):
if n > 2:
F(n - 1)
F(n // 2)
print(n)Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Показать ответ
3453637
Подсказки (3)
- Какие два рекурсивных вызова выполняются внутри F(n) до вывода самого значения n?
- Сначала полностью выполняется F(n−1), затем F(n//2), и только после этого выводится n.
- Для 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
Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.