ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Рекурсия и рекуррентные зависимости.
Учебные темы: Рекурсия. Рекурсивные процедуры и функции. Использование стека для организации рекурсивных вызовов.
| КЭС: | 3.7 Рекурсия. Рекурсивные процедуры и функции. Использование стека для организации рекурсивных вызовов 3.16 Динамическое программирование как метод решения задач с сохранением промежуточных результатов. Задачи, решаемые с помощью динамического программирования: вычисление рекурсивных функций, подсчёт количества вариантов, задачи оптимизации 3.17 Понятие об объектно-ориентированном программировании. Объекты и классы. Свойства и методы объектов. Объектно-ориентированный анализ. Разработка программ на основе объектно-ориентированного подхода. Инкапсуляция, наследование, полиморфизм |
| Тип ответа: | Краткий ответ |
Ответ: 8765345
Начальный вызов: F(8). Нужно записать все напечатанные числа в порядке вывода, без разделителей.
Рекурсивный вызов выполняется полностью, прежде чем программа продолжит следующую строку вызывающей процедуры. Поэтому порядок команд существенен. При завершении вызова возвращаемся к месту его вызова; уже напечатанные символы сохраняются. Одинаковые вызовы в разных местах выполняются каждый раз и не объединяются.
Процедура F: печать n выполняется независимо от проверки условия; при n ≥ 6 последовательно выполняются вызов F(n − 1), затем вызов F(n − 3).
Обозначим S(n) — строку вывода полного вызова F(n), а ε — пустую строку. Результаты вложенных вызовов соединяются в порядке команд. Ниже отдельно записан результат каждого встречающегося аргумента; знак ⧺ означает соединение строк, а не сложение чисел. Это позволяет раскрыть рекурсию от самых коротких вызовов к исходному.
S(3) = «3» = «3».
S(4) = «4» = «4».
S(5) = «5» = «5».
S(6) = «6» ⧺ S(5) ⧺ S(3) = «653».
S(7) = «7» ⧺ S(6) ⧺ S(4) = «76534».
S(8) = «8» ⧺ S(7) ⧺ S(5) = «8765345».
Порядок фактической печати при обходе вызовов:
8 → 7 → 6 → 5 → 3 → 4 → 5.
Убираем разделители и получаем 8765345.
Проверка. Отдельное исполнение команд с явным стеком вызовов дало тот же порядок печати 8765345. В трассировке учтены все 7 вызовов и 7 операций печати; после каждого завершения выполнение возвращается к следующей команде, а после ложного условия пропускается только его тело.
Ответ: 8765345.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF696B06.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.