Русская Википедия:Рекурсивная функция

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Другие значения

Рекурси́вная фу́нкция (от Шаблон:Lang-la — возвращение) — это числовая функция <math>f(n)</math> числового аргумента, которая в своей записи содержит себя же. Такая запись позволяет вычислять значения <math>f(n)</math> на основе значений <math>f(n-1), f(n-2),\ldots</math>, подобно рассуждению по индукции. Чтобы вычисление завершалось для любого <math>n</math>, необходимо, чтобы для некоторых <math>n</math> функция была определена нерекурсивно (например, для <math>n=0, 1</math>).

Примеры

Пример рекурсивной функции, дающей n-ое число Фибоначчи:

<math> F = \begin{cases} F(0)=0; \\ F(1) = 1; \\ F(n) = F(n-1) + F(n-2),\quad n > 1. \end{cases} </math>[1]

Руководствуясь этой записью, мы можем вычислить <math>F(n)</math> для любого натурального n за конечное число шагов. Правда, по пути придётся дополнительно вычислить значения <math>F(n-1),F(n-2),\ldots,F(2)</math>.

Замкнутая форма

В связи с накладными расходами полезно знать, есть ли у рекурсивной функции нерекурсивная (замкнутая) форма.

Замкнутая форма может быть найдена не для всех рекурсивных функций (соотношений). Для некоторых из них найдены лишь приближенные замкнутые формы. Некоторые рекурсивные соотношения, такие как факториал, считаются элементарными математическими операциями.

Например, рекурсивная функция, описывающая сумму чисел натурального ряда:

<math> f = \begin{cases} f(0)=0; \\ f(n) = n + f(n-1),\quad n > 0 \end{cases}</math>

может быть переведена в замкнутую форму: <math>f = \frac{n(n+1)}{2}</math>.

Приложения

Рекурсивные функции играют важную роль в теории алгоритмов, так как многие алгоритмы имеют рекурсивную структуру.

Примечания

Шаблон:Примечания

Шаблон:Math-stub Шаблон:Нет ссылок