Rekurencja
Czy patrzyłeś kiedyś w lustro, w którym było widać drugie lustro, a w tym lustrze znowu pierwsze lustro i w tym pierwszym znowu to drugie i tak bez końca? Obraz tworzy się praktycznie nieprzerwanie.
Być może też słyszałeś w dzieciństwie piosenkę o psie:
"Wlazł pies do budy i porwał mięsa ćwierć. A kucharz głupi zarąbał go na śmierć. A kucharz mądry co litość w sercu miał, wykopał mu dołeczek, wsadził psa i taki napis dał: "Wlazł pies do budy i porwał mięsa ćwierć. A kucharz głupi zarąbał go na śmierć. A kucharz mądry co litość w sercu miał, wykopał mu dołeczek, wsadził psa i taki napis dał: ""...itd""
Coś podobnego dzieje się w rekurencji. Rekurencja to wywołanie jakiejś metody przez samą siebie. W pewnym miejscu następuje ponowne wywołanie siebie od początku. Gdyby nie przerwać rekurencji, trwałaby w nieskończoność.
W programowaniu pewna procedura wywołuje siebie samą i coraz bardziej zagnieżdża się w swoim kodzie. Wiąże się to z odłożeniem pewnej pamięci na tzw. stos. Gdyby nie przerwać tego 'błędnego koła' pamięć w końcu się skończy, a program przestanie działać.
Rekurencję wykorzystuje się do niektórych metod, takich jak: wypełnianie obrazka jakimś kolorem, wykrywanie min w grze saper, obliczanie pewnych działań matematycznych. Przydaje się także podczas tworzenia drzew katalogów, wyszukiwania plików, budowania forum internetowych i wielu innych zastosowań. Przykład użycia rekurencji do obliczania silni, możesz zaobserwować w rozdziale poświęconym pisaniu funkcji.