Основы программирования. Файлы. Рекурсия - 26 стр.

UptoLike

Составители: 

28
вращаться. Таким образом, действия на рекурсивном спуске совершаются в пря-
мом порядке, а обещанные действия осуществляются на рекурсивном подъеме в
порядке, обратном порядку обещаний.
4) Каскадная рекурсия.
procedure p(n);
begin
S(n)
if B1(n) then p(n-1);
if B2(n) then p(n-1);
end;
5) Удаленная рекурсия.
function f(i: integer): integer;
begin
if B1(n) then Result:=...
else Result:=f(f(i-1));
end;
В этом виде рекурсии результат рекурсивного вызова
является параметром
другого рекурсивного вызова. Наиболее известным примером удаленной рекур-
сии является функция Аккермана:
>>
=>
=+
=
.0,0если)),1,(,1(
,0,0если),1,1(
,0если,1
),(
mnmnAnA
mnnA
nm
mnA
В последних двух видах рекурсии рекурсивные вызовы образуют древовид-
ную структуру.
2.5 Пример плохого использования рекурсии
Пример 7. Пример плохого использования рекурсии. Числа Фибоначчи.
Как известно, определение чисел Фибоначчи рекурсивно:
>+
=
=
.2,
,2,1,1
21
nff
n
f
nn
n
Данное определение легко переводится в рекурсивную функцию:
function Fib(n: integer): integer;
begin
if (n=1) or (n=2) then
Result:=1
else Result:=Fib(n-1)+Fib(n-2);
end;