PTTC.PNG
Skip to main content.

рекурсивная функция

Дата последнего изменения:2012.07.30
Сообщить об ошибке
  рекурсивная функция
Функция, которая в своем определении содержит обращение к самой себе.
В математике и информатике рекурсивной называют такую функцию или процедуру, которая при своей работе обращается к себе самой, прямо или косвенно. Соответственно говорят о прямой и косвенной рекурсии. При прямой рекурсии процедура содержит вызов себя в своем собственном теле, например:
ЭТО прямая....
ЕСЛИ ... ТО прямая
....
КОНЕЦ
Косвенная рекурсия образуется цепочкой процедур, и эта цепочка замыкает себя в рекурсивное кольцо, например:
ЭТО процедура0
....
... процедура1
....
КОНЕЦ
ЭТО процедура1
....
... процедура2
....
КОНЕЦ
ЭТО процедура2
....
... процедура0
....
КОНЕЦ
В примере цепочка "процедура0--процедура1--процедура2--процедура0" образует косвенную рекурсию. "Процедура0" является рекурсивной, так как вызывает сама себя. Правда, этот вызов не прямой, а косвенный, через обращение к процедурам "процедура1" и "процедура2". Понятно, что каждая из процедур рекурсивной цепочки (и "процедура 1", и "процедура2") тоже являются рекурсивными.
Прямая рекурсия всегда предпочтительнее косвенной не в смысле эффективности выполнения, а в смысле наглядности записи. Читателю программы проследить косвенную рекурсию сложнее.
Сама по себе косвенная рекурсия не содержит новых идей. Это просто другая форма записи прямой рекурсии, если, конечно, промежуточные процедуры не содержат других дополнительных рекурсий.
Рекурсия это не GOTO (переход на начало процедуры). Рекурсивный вызов - это выполнение КОПИИ процедуры: он может порождать "отложенные" команды, которые начнут выполняться после завершения рекурсии. И будут выполняться столько раз, сколько было рекурсивных вызовов. (из статей А.А. Дуванова).
Пример рекурсии:
У попа была собака,
Он ее любил.
Она съела кусок мяса,
Он ее убил.
И в ямку закопал,
И надпись написал:
У попа была собака...
[http://www.morepc.ru/dict/]
EN  
FR  

Тематики

  • информационные технологии в целом

EN

  • recursive function

 

Внимание!

Закрыть