De ce contează?
Imaginează-ți că deschizi o cutie ca să găsești un cadou — dar înăuntru e o cutie mai mică, iar în ea alta și mai mică. Le deschizi pe rând, lăsând cutiile mari deschise pe masă, până la cea mai mică, în care e cadoul. Apoi le închizi la loc, de la cea mică la cea mare. Un apel recursiv face exact asta: coboară deschizând cutii, apoi urcă închizându-le. Fiecare cutie e separată de celelalte.
Intuiția
Când o funcție se apelează pe ea însăși, calculatorul nu „reutilizează" aceeași
funcție — pornește un apel nou, complet separat, cu propriul set de variabile
locale. Acest set se numește cadru și e pus pe stiva de apeluri. Apelul
care a pornit altul se suspendă: stă pe loc și așteaptă rezultatul, fără să-și
piardă valorile. Așa, f(3) îl așteaptă pe f(2), care îl așteaptă pe f(1).