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?