Реку́рсия — метод определения класса объектов или методов предварительным заданием одного или нескольких (обычно простых) его базовых случаев или методов, а затем заданием на их основе правила построения определяемого класса.
Другими словами, рекурсия — частичное определение объекта через себя, определение объекта с использованием ранее определённых. Рекурсия используется, когда можно выделить самоподобие задачи.
Определение в логике, использующее рекурсию, называется индуктивным, напр. см. Натуральное число).
Мощь рекурсивного определения объекта в том, что такое конечное определение способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же, возможно описать бесконечное вычисление, причём без явных повторений частей программы.
Имеется специальный тип рекурсии, называемый «хвостовой рекурсией». Интерпретаторы и компиляторы функциональных языков программирования, поддерживающие оптимизацию кода (исходного и/или исполняемого), выполняют хвостовую рекурсию в ограниченном объёме памяти при помощи итераций.
Следует избегать избыточной глубины рекурсии, так как это может вызвать переполнение стека вызовов.
Классическим примером бесконечной рекурсии являются два поставленные друг напротив друга зеркала: в них образуются два коридора из затухающих отражений зеркал.
Другим примером бесконечной рекурсии является эффект самовозбуждения (положительной обратной связи) у электронных схем усиления, когда сигнал с выхода попадает на вход, усиливается, снова попадает на вход схемы и снова усиливается. Усилители, для которых такой режим работы является штатным, называются автогенераторы.
Итерация от человека. Рекурсия — от Бога.'' — Л. Питер Дойч (Д. Кнут. Искусство программирования.)
Несколько рассказов Станислава Лема посвящены (возможным) казусам при бесконечной рекурсии:
Русская народная сказка-песня «У попа была собака…» являет пример рекурсии:
У попа была собака, он её любил
Она съела кусок мяса, он её убил
В землю закопал,
Надпись написал:
(кавычки цитат никогда не закроются)
Рекурсия | Rekurze | Rekursiv | Rekursion | Recursion | Recursión | Récursivité | רקורסיה | Rekursi | Rekurso | Ricorsione | Rekursija | Recursie | Rekursja | Rekurzija | Rekursion | 递归
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Рекурсия".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world