Metody rekurencyjne są takimi metodami, które w kodzie programu wywołują same siebie. Powoduje to przejście wykonywania programu do uruchomionego podprogramu i swobodne zagnieżdżanie się tak wywoływanych metod, aż do uzyskania zamierzonego celu (bądź wyczerpania zasobów pamięci maszyny obliczeniowej).
Prostym przykładem metody rekurencyjnej jest poniższy program:
#include <iostream> #include <ctime> int dodaj_x_razy_losowa_wartosc(int wartosc, int ile_razy) { if (ile_razy>0) dodaj_x_razy_losowa_wartosc(wartosc+rand(),--ile_razy); else return wartosc; } int main() { srand(time(0)); printf("Suma losowa 100x wynosi : %10d", dodaj_x_razy_losowa_wartosc(rand(),100)); return 0; }
Jak widać, w powyższym kodzie nie ma w nim ani jednej jawnej pętli, a mimo to program wykonał się dokładnie 100 razy zgodnie z zadanymi parametrami uruchomienia metody rekurencyjnej wywołanej w main. Należy pamiętać, że rekurencyjne wywoływanie metod wykorzystuje dosyć intensywnie pamięć, wobec czego może się zdarzyć, że zabraknie jej dla wykonywanego programu, a program zakończy się błędem. Rekurencja jest jednak bardzo wygodna w niektórych zastosowaniach dzięki czemu nie trzeba pisać rozbudowanych struktur programistycznych. Nie rozumiejąc jednak rekurencji łatwo można doprowadzić do awarii programu – dla przykładu wystarczy zmienić pre-inkrementację zmiennej ile_razy na post-inkrementację, powodując, że program będzie się zagnieżdżał w nieskończoność, aż do wyczerpania dostępnej pamięci.