РУҚА
16

Решение: Вывод рекурсивной функции

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

Ниже на пяти языках программирования записана рекурсивная функция (процедура) F. Функция сначала выводит значение n, затем, если n >= 3, вызывает F(n - 1), а после этого — F(n - 3). Что выведет программа при вызове F(5)?

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

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

5 шагов
1

Вызов $F(5)$ сначала выводит цифру 5, затем вызывает $F(4)$ и $F(2)$.

$$F(5) \to 5, F(4), F(2)$$
2

Раскрываем вызов $F(4)$: выводится 4, затем выполняются $F(3)$ и $F(1)$.

$$F(4) \to 4, F(3), F(1)$$
3

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

$$F(3) \to 3, 2, 0$$
4

Последовательность вывода для $F(4)$ равна 43201, а затем после завершения $F(4)$ вызывается $F(2)$ из исходного вызова.

$$F(4) \to 43201$$

Объединяем все значения в порядке выполнения вызовов.

$$5 + 43201 + 2 = 5432012$$
Ответ
5432012
5432012
так ответ выглядит в бланке

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

Меняют местами вызовы F(n - 1) и F(n - 3).

Не выводят значения при n < 3.

Пытаются записать только конечные значения рекурсивных вызовов, не учитывая первоначальный вывод n.

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

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

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

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