Rekurzivne funkcije su kao seks - koliko puta uđeš toliko puta moraš i da izađeš i uvek nastavljaš tamo gde si poslednji put izašao
Doca je već lepo demonstrirao gde si napravio previd - zaboravio si da rekurzivno pozvane funkcije moraju da izađu iz svojih poziva i da svaki put kad se pozove
b() prilikom vraćanja rezultata dodaje još 2. Kada skript dođe do spornog trenutka (
val = 36 na liniji #6) if zaista detektuje da je
foo veće od 20 i izvršava
return foo; ali poenta je u tome što se kontrola izvršenja ne prebacuje na liniju #1 već na poslednju funkciju koja je pozvala
a() a to je
c() i tako u krug dok se ne izađe iz svih pozvanih rekurzivnih funkcija.