Процедуры и функции

Рекурсивные процедуры и функции


Алгоритм называется рекурсивным, если в качестве вспомогательного алгоритма (подпрограммы) он использует самого себя.

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

Пример 4. Рассмотрим пример рекурсивной функции вычисления xn, где n- натуральное число.

Воспользуемся известным фактором:    

function deg(x, n: integer): longint;
begin
if n = 0 then deg:=1
else deg:=deg(x, n-1)*x;
end;

Рекурсивность функции или процедуры – это не свойство, а способ задания. Любую рекурсивную подпрограмму можно задать не рекурсивно, а с помощью оператора цикла. Рекурсия делает программу лаконичнее, короче в описании. Однако, программа, использующая рекурсию, работает медленнее. Выбирать рекурсию или не использовать ее зависит от того, желаете вы сделать программу «короче» или «быстрее».

В языке Паскаль допускается и косвенная рекурсия, когда, например, процедура А вызывает процедуру В, а та, в свою очередь, - процедуру А. В этом случае, вместо тела опережающей процедуры пишется директива forward, затем следует описание второй процедуры, а после ее завершения следует полное описание первой процедуры.



Назад

Далее