16 номер. Рекурсия
Вычисление рекурсивной функции
(А. Богданов) Алгоритм вычисления значения функции F(n), где n – целое число, задан следующими соотношениями:
f(n)= {{ 0, n=0 ; 1, n<3 ; f(n-1)+f(n-2), n≥ 3 }.
Найдите значение функции для n=47. В ответ запишите младшие 4 цифры полученного десятичного числа.
Подсказка
Начните с базового случая и направления изменения аргумента. Для выражения из нескольких значений сначала проверьте, можно ли сократить общую часть.
Решение
Искомая величина: Найдите значение функции для n=47. В ответ запишите младшие 4 цифры полученного десятичного числа.
Выпишите базовые значения и границы каждой ветви. Для конкретного аргумента сначала выберите применимое условие, затем подставляйте рекуррентную формулу этой ветви; базовый случай имеет приоритет перед дальнейшим раскрытием.
Если переходы используют меньшие аргументы, заполняйте значения по возрастанию от базовой области. При повторных обращениях используйте сохранённый результат: это позволяет избежать многократного обхода одних и тех же ветвей рекурсии.
Если нужны последние k цифр, итог берётся по модулю 10ᵏ. Для рекурсии только со сложением, вычитанием и умножением остаток можно сохранять на каждом шаге. При делении такой перенос модуля без дополнительного обоснования неверен. При требовании ровно k цифр сохраните ведущие нули.
После получения нужных значений подставьте их именно в выражение из вопроса, сохранив коэффициенты, знаки и скобки. Значение одной функции может быть лишь промежуточной величиной, а не окончательным ответом.
Ответ: 5073.