Рекурсивная процедура

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

Планируя использование рекурсивных процедур, необходимо продумывать следующие вопросы:

1. способы передачи параметров в процедуру и возврата результатов ее работы;

2. способ сохранения локальных переменных процедуры;

3. организацию выхода из процедуры.

Характерные моменты рекурсивного вызова процедур на примере классической рекурсивной задачи — вычисления факториала.