Junior
Care este diferența dintre implementarea aceleiași sarcini folosind recursivitate și un ciclu?
sobes.tech AI
Răspuns de la AI
Recursiunea folosește apelul funcției însăși pentru rezolvarea unei probleme, împărțind-o în sub-sarcini mai mici până la cazul de bază. În schimb, bucla repetă un bloc de cod de un anumit număr de ori sau până când o condiție este îndeplinită.
| Caracteristică | Recursiune | Buclă |
|---|---|---|
| Executare | Apel de funcție | Iterație |
| Memorie | Folosește stiva de apeluri | Folosește variabile de contor/condiție |
| Citibilitate | Poate fi mai concisă pentru anumite sarcini | De obicei mai directă |
| Performanță | Poate fi mai lentă din cauza costurilor apelurilor | De obicei mai eficientă |
| Supraîncărcare stivă | Riscul de supraîncărcare în recursie profundă | Nu există risc de supraîncărcare a stivei |
Exemplu în C# (factorial):
Implementare recursivă:
// Calcul recursiv al factorialului
int FactorialRecursive(int n)
{
if (n == 0)
{
return 1; // Caz de bază
}
return n * FactorialRecursive(n - 1); // Apel recursiv
}
Implementare cu buclă:
// Calculul factorialului cu buclă
int FactorialIterative(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}