FOLIA13 (4)


Rekurencja
Omawiając procedury i funkcje nadmieniliśmy, że istnieje moż-
liwość wywoływania procedury/funkcji z innej procedury lub funkcji.
Procedure A;
BEGIN
...
B;
...
END;
Co by się jednak stało, gdyby procedura A wywołała sama sie-
bie? Taka sytuacja jest w Turbo Pascalu dopuszczalna i nosi nazwę
rekurencji (rekursji).
Jeżeli wywołana po raz pierwszy w programie procedura wy-
wołuje (ze swego wnętrza) samą siebie, znaczy to, że procedura ta
nie została wykonana do końca. Rozpoczynając drugie wykonanie
samej siebie od początku, jej pierwsze wykonanie pozostaje w
stanie otwartym.
Procedura wykonywana po raz drugi, napotykając miejsce,
gdzie jest jej wywołanie, wywołuje się po raz trzeci, pozostawiając
drugie wywołanie w stanie otwartym itd.
Mając do czynienia z tak działającym mechanizmem, musimy
odpowiedzieć na dwa istotne pytania:
" Jak zatrzymać proces ciągłego wywoływania przez procedurę
samej siebie? Proces ten może przebiegać teoretycznie bez
końca, a praktycznie do przepełnienia stosu programu.
" Po każdym wywołaniu samej siebie procedura wywołująca nie
zostanie wykonana do końca, pozostając w stanie otwartym.
Kiedy i czy w ogóle zostanie dane wywołanie zamknięte?


Wyszukiwarka