Funcții
Recursivitate
O funcție recursivă se apelează pe ea însăși. Are nevoie de un caz de bază (condiție de oprire) pentru a nu rula la infinit.
recursion.cpp
int factorial(int n) {
if (n == 0 || n == 1) return 1; // caz de bază
return n * factorial(n - 1); // apel recursiv
}
cout << factorial(5) << endl; // 120 (5*4*3*2*1)Fibonacci recursiv
int fib(int n) {
if (n <= 1) return n;
return fib(n-1) + fib(n-2);
}
// fib(0)=0, fib(1)=1, fib(2)=1, fib(3)=2...Suma cifrelor — recursiv
int sumaCifre(int n) {
if (n == 0) return 0;
return n % 10 + sumaCifre(n / 10);
}
cout << sumaCifre(1234) << endl; // 10Fiecare apel recursiv ocupă spațiu pe stack. Recursivitate prea adâncă → stack overflow! Pentru n mare, preferă varianta iterativă sau memoizarea.
✏️ Exercițiu
Scrie o funcție recursivă care calculează suma 1+2+3+...+n.
💡 Indiciu: suma(0) = 0, suma(n) = n + suma(n-1)