Rekurencja to technika programistyczna, w której funkcja (lub procedura/metoda) wywołuje samą siebie, zwykle po to, aby rozwiązać problem poprzez rozbicie go na mniejsze podproblemy tego samego typu.
W praktyce każda poprawnie zaprojektowana rekurencja powinna mieć dwa elementy:
- przypadek bazowy (warunek zakończenia) – sytuację, w której funkcja nie wywołuje się ponownie i zwraca wynik,
- krok rekurencyjny – część, w której funkcja wywołuje się dla "mniejszego" lub prostszego argumentu.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- Iteracja oznacza wielokrotne wykonanie fragmentu kodu, najczęściej przy użyciu pętli (np. for/while). To alternatywny sposób rozwiązywania wielu problemów, ale nie jest to "wywołanie funkcji do samej siebie".
- Hermetyzacja (często spotyka się też termin "enkapsulacja") dotyczy ukrywania danych/implementacji i udostępniania kontrolowanego interfejsu w programowaniu obiektowym. Nie opisuje mechanizmu wywołań funkcji.
- Dziedziczenie to relacja między klasami w OOP, w której jedna klasa przejmuje cechy/informacje po innej. Również nie jest to samowywołanie funkcji.
W kontekście aplikacji internetowych rekurencja pojawia się m.in. przy przetwarzaniu struktur drzewiastych (np. DOM HTML) lub zagnieżdżonych danych (np. JSON). Warto pamiętać o ryzyku zbyt głębokiej rekurencji (przepełnienie stosu) i o tym, że część zadań da się zapisać iteracyjnie.