Что такое рекурсия?

Рекурсия - определение объекта или действие через самого себя. Рекурсивные акронимы - аббревиатуры, которые расшифровываются сами через себя.

Термин "рекурсия" часто встречается в компьютерной литературе (не обязательно посвящённой программированию), однако многие пользователи, судя по разговорам с ним, не знают, что это такое. Читатели "КВ", которые прочитают эту заметку, смогут подняться над общим уровнем, ведь рекурсия - это очень важная и жизненная вещь.

Рекурсия - определение объекта или действие через самого себя. Рекурсия очень активно используется в математике, откуда, собственно, и пришёл сам этот термин. Так, рекурсивно можно определить многие математические функции - например, n-факториал (n!). Факториал - это произведение последовательно стоящих натуральных чисел от единицы до n (например, 3! = 1·2·3). Рекурсивно факториал выражается так: n! = n·(n-1)!.

Помимо математической рекурсии, есть также рекурсия языковая. Самый простой пример - известная шутка (как говорится, не "боян", а классика): чтобы понять рекурсию, нужно сначала понять рекурсию. Очень удачное выражение, целиком и полностью объясняющее суть рекурсии как понятия и метода.

Что касается IT-индустрии, то здесь рекурсия - это, конечно же, в первую очередь, та рекурсия, что используется в программировании. В принципе, она похожа на математическую рекурсию, но ровно настолько, насколько программирование похоже на математику. Здесь обычно под рекурсией понимают такой способ написания программного кода, когда какая-то функция вызывает саму себя. Это может происходить не только прямо, но и опосредованно, то есть, одна функция может вызывать другую, которая, в свою очередь, будет при этом вызывать первую. Такой случай принято называть сложной рекурсией. Приходилось слышать мнения, что использование рекурсии при написании программ снижает их стабильность, но, как правило, при грамотном использовании рекурсия способна существенно улучшить время, за которое выполняется программа, а также повысить читаемость программного кода.

Интересным эффектом применения рекурсии в программировании стало распространение так называемых рекурсивных акронимов - аббревиатур, которые расшифровываются через самих себя. Так очень часто называются организации или проекты по разработке свободного программного обеспечения. Например: GNU - GNU is Not Unix, WINE - WINE Is Not an Emulator, PHP: Hypertext Preprocessor.

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

10 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!