ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Рекурсия и рекуррентные зависимости.
Учебные темы: Рекурсия. Рекурсивные процедуры и функции. Использование стека для организации рекурсивных вызовов.
| КЭС: | 3.7 Рекурсия. Рекурсивные процедуры и функции. Использование стека для организации рекурсивных вызовов 3.16 Динамическое программирование как метод решения задач с сохранением промежуточных результатов. Задачи, решаемые с помощью динамического программирования: вычисление рекурсивных функций, подсчёт количества вариантов, задачи оптимизации 3.17 Понятие об объектно-ориентированном программировании. Объекты и классы. Свойства и методы объектов. Объектно-ориентированный анализ. Разработка программ на основе объектно-ориентированного подхода. Инкапсуляция, наследование, полиморфизм |
| Тип ответа: | Краткий ответ |
Ответ: 3
Начальный вызов: F(12). Нужно посчитать напечатанные звёздочки.
Рекурсивный вызов выполняется полностью, прежде чем программа продолжит следующую строку вызывающей процедуры. Поэтому порядок команд существенен. При завершении вызова возвращаемся к месту его вызова; уже напечатанные символы сохраняются. Одинаковые вызовы в разных местах выполняются каждый раз и не объединяются.
Процедура F: при n ≥ 1 последовательно выполняются вызов G(n − 1).
Процедура G: печать звёздочки выполняется независимо от проверки условия; при n ≥ 2 последовательно выполняются вызов F(n − 3).
Обозначим через CF(n) и CG(n) количество звёздочек за один полный вызов. Тогда CF(n) = 0 при n ≤ 0 и CF(n) = CG(n − 1) при n ≥ 1. Вторая процедура печатает одну звёздочку всегда: CG(n) = 1 при n ≤ 1 и CG(n) = 1 + CF(n − 3) при n ≥ 2. Печать выполняется до проверки в G, поэтому последнее посещение G также надо учесть.
Полная цепочка вызовов:
1. F(12).
2. G(11) — печатается *.
3. F(8).
4. G(7) — печатается *.
5. F(4).
6. G(3) — печатается *.
7. F(0).
В цепочке 3 вызовов G; каждый печатает ровно одну звёздочку. Вызовы F ничего не печатают. Получаем ***, число символов равно 3.
Проверка. Отдельное исполнение команд с явным стеком вызовов дало тот же счётчик 3. В трассировке учтены все 7 вызовов и 3 операций печати; после каждого завершения выполнение возвращается к следующей команде, а после ложного условия пропускается только его тело.
Ответ: 3.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF4ADA78.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.