решай.ai · шпаргалка
Задание 16: Рекурсивные алгоритмы
ЕГЭ Информатика
Как выглядит
Типичная формулировка: «Алгоритм вычисления значения функции , где — целое неотрицательное число, задан следующими соотношениями: ; , если и чётно; , если нечётно. Чему равно значение ?» или «Сколько существует таких в диапазоне , что ?»
…
Что нужно знать
- Рекурсия состоит из базового случая (значение функции при конкретном , обычно или ) и рекуррентного перехода, выражающего через от меньшего аргумента.
- Чётность числа определяется остатком от деления на 2: — чётное, — нечётное.
- Целочисленное деление (обычно обозначается как в условии таких задач) означает — деление с отбрасыванием остатка.
- Глубина рекурсии — количество шагов от до базового случая. У функций с одним предыдущим значением глубина равна ; у функций вида «делим на 2» глубина порядка .
- Разложение числа в двоичной системе: любое натуральное число можно представить как сумму степеней двойки, а операция « чётно — делим на 2, нечётно — вычитаем 1» соответствует последовательному разбору двоичных разрядов.
- Число единичных битов в двоичной записи числа иногда называют весом Хэмминга или popcount — это стандартная интерпретация ряда рекурсивных функций деления на 2.
- Сумма арифметической прогрессии: ; сумма квадратов первых натуральных чисел: — такие формулы помогают проверять результат прикидочно.
- Число сочетаний применяется, когда нужно посчитать количество чисел с заданным количеством единичных битов в двоичной записи.
Алгоритм
- Определить тип задачи: нужно найти конкретное значение или посчитать количество чисел с определённым свойством результата.
- Выписать базовый случай и все ветки перехода, обратив внимание на условия (строгое/нестрогое неравенство, чётность/нечётность).
- Если рекурсия опирается на одно предыдущее значение — построить таблицу от базового случая вверх до нужного , вычисляя каждое значение по формуле.
- Если рекурсия использует деление на 2 или пропуск через два шага — распознать закономерность на малых числах (0, 1, 2, ..., 10) и сформулировать общее правило (например, что функция считает количество единиц в двоичной записи или сумму определённых слагаемых).
- Аккуратно проводить арифметику на каждом шаге, особенно операции целочисленного деления и возведения в степень — ошибка на одном шаге ломает всю цепочку. …
Ловушки
- Путаница между обычным делением и целочисленным: запись в условии почти всегда означает , а не результат с дробной частью.
- Пропуск или неверное применение базового случая — важно проверить, при каком именно задано базовое значение (, или ), иначе цепочка обрывается неправильно.
- Смешивание веток чётных и нечётных индексов при рекурсии вида : такая рекурсия связывает только числа одной чётности, попытка идти через приведёт к неверному результату.
- Арифметические ошибки при вычислении квадратов, кубов или сумм на длинной цепочке — рекомендуется вести таблицу с промежуточными значениями, а не считать всё в уме. …
reshay.ai/ege/informatika/zadanie-16 — задачи с разборами и тренажёр