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

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

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


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

Показать ответ
8421421
Подсказки (3)
  1. Какое число выводится первым при вызове F(8) и какие два рекурсивных вызова выполняются после этого?
  2. Для каждого положительного n порядок действий таков: вывести n, выполнить F(n−4), затем выполнить F(⌊n/2⌋).
  3. Вызов F(8) даёт 8, затем два одинаковых вызова F(4). Каждый вызов F(4) выводит последовательность 4,2,1.
Решение
1. При вызове F(8) сначала выводится число 8. Затем выполняются вызовы F(4) и F(4).
F(8)→8, F(4), F(4)

2. Первый вызов F(4) выводит 4, затем вызывает F(0) и F(2). Вызов F(0) ничего не выводит, а F(2) выводит 2, после чего вызывает F(−2) и F(1).

3. Вызов F(1) выводит 1, а его дальнейшие вызовы имеют неположительные аргументы и ничего не выводят. Поэтому один вызов F(4) даёт последовательность 421.

4. Второй вызов F(4) даёт такую же последовательность 421.
Частые ошибки
  • Забывают, что после завершения первого рекурсивного вызова выполняется второй.
  • Выводят число после рекурсивных вызовов, хотя оно печатается до них.
  • Учитывают вызовы с неположительными аргументами, хотя условие вывода — n>0.

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

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

16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): print(n, end='') if n >= 3: F(n - 1) F(n - 3)…Порядок вывода рекурсивного алгоритма · 1D337E16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): print(n, end='') if n >= 2: F(n - 2) F(n - 1)…Порядок вывода рекурсивного алгоритма · 26ADAF16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): print(n, end='') if n >= 4: F(n - 1) F(n // 2)…Порядок вывода рекурсивного алгоритма · 28131C16Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 2: print(n) F(n // 2) F(n - 1) Запишите…Порядок вывода рекурсивного алгоритма · 2D68B616Ниже записан рекурсивный алгоритм F на языке Python. def F(n): print(n, end='') if n >= 7: F(n - 1) F(n - 3)…Порядок вывода рекурсивного алгоритма · 3989D316Ниже записан рекурсивный алгоритм F на языке Python. def F(n): if n > 0: F(n - 3) print(n) F(n // 2) Запишите…Порядок вывода рекурсивного алгоритма · 4ABC6516Ниже записан рекурсивный алгоритм 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) Запишите…Порядок вывода рекурсивного алгоритма · 55D63C

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

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

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

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

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

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

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