Теория:
Характеристика задания
1. Тип ответа: запись числового значения.
2. Структура содержания задания: дана рекурсивная функция.
3. Уровень сложности задания: повышенный.
4. Примерное время выполнения: \(5\) минут.
5. Количество баллов: \(1\).
6. Требуется специальное программное обеспечение: да.
7. Задание проверяет умение работать с рекурсивными алгоритмами, осуществлять вычисления с помощью языка программирования.
Пример задания (демоверсия \(2022\))
Алгоритм вычисления значения функции \(F(n)\), где \(n\) — натуральное число, задан следующими соотношениями:
\(F(n)\) \(=\) \(1\) при \(n=1\);
\(F(n) = n + F(n-1)\), если \(n\) чётно,
\(F(n)\) \(= 2 × F(n-2)\), если \(n>1\) и при этом \(n\) нечётно.
Чему равно значение функции \(F(26)\)?
Как решать задание?
Задание можно решить «ручным» методом, т. е. самостоятельно посчитать функцию. Это займёт слишком много времени, поэтому лучше написать программу.
Что такое функция, можно вспомнить тут.
Что такое рекурсивный алгоритм, можно вспомнить тут.
Напишем программу
| Объявим функцию | |
| Опишем первое условие: если \(n=1\), то... | |
![]() | Оператор return прекращает вычисление функции. При \(n=1\) функция закончит своё вычисление и будет равна \(1\) |
![]() | В следующем условии будет определять чётность \(n\). % — это получение остатка от деления |
![]() | Если \(n\) будет чётным, то выполним следующее действие: \(n+f(n-1)\) |
![]() | Если \(n\) больше единицы и при этом нечётное... Напомним, знак \(!=\) обозначает «не равно» |
![]() | Выполним действие: \(2*f(n-2)\) |
![]() | Организуем вывод данных, в скобках укажем необходимое нам значение \(n\). Запустим программу |
Ответ: \(4122\).
Источники:
Изображения. © ЯКласс.





