Wewnątrz ciała funkcji może wystąpić instrukcja wywołania tej samej funkcji. Mówimy wtedy o wywołaniu rekurencyjnym funkcji, albo o rekursji.
int funckja(int x, int y) { if(warunekKoncaRekursji) { return wartoscPoczatkowaRekursji; } // rób coś .... // wywołaj rekurencyjnie funkcja(a,b); // dowolną ilość razy funkcja(c,d); }
Aby nie doszło do zapętlenia programu, funkcja rekurencyjna musi zawierać wyrażenie warunkowe pozwalające na przerwanie rekurencyjnych wywołań.