REKURSIOON - Recursion
kompaktsena.
Näide. Esitame n! arvutamise rekursiivse funktsiooni sellisena, kus vahetulemid N - 1 ja
Fakt(N - 1) omistatakse abimuutujatele A ja B:
FUNCTION Fakt(N: Byte): Longint;
VAR
A: Byte;
B: Longint;
BEGIN
IF N = 0 THEN
BEGIN Fakt := 1; Exit; END;
A := N - 1;
B := Fakt(A);
Fakt := (A + 1) * B;
END; {Fakt}
See funktsioonivariant kirjeldab adekvaatsemalt süsteemi tegelikku tööd funktsiooni
täitmisel. Nimelt loob translaator omaette mäluväljad mitte üksnes alamprogrammi
lokaalmuutujatele, vaid ka avaldistes esinevate tehete tulemitele. Ka need kantakse pinu-
desse. Seega saame näite viimast varianti analüüsides ôige pildi süsteemi toimingutest
pinudega.
Teine näide: Fibonacci arvud.
Jada: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377...