Lectie 7.1 – Funcții recursive în C++

Lecție 7.1 – Funcții recursive în C++

Bun venit la a șaptea lecție din cadrul cursului nostru de programare în limbajul C++. În această lecție, vom explora conceptul de funcții recursive și cum pot fi utilizate pentru a rezolva algoritmi.

Ce este o funcție recursivă?

O funcție recursivă este o funcție care se apelează pe sine în interiorul propriului său cod. Acest lucru permite rezolvarea problemelor complexe prin împărțirea lor în subprobleme mai simple, care sunt apoi rezolvate recursiv.

Funcțiile recursive au două componente principale:

  1. Cazul de bază – un caz simplu care poate fi rezolvat direct, fără a mai apela funcția recursivă.
  2. Cazul general – un caz mai complex care necesită apelul funcției recursive pentru a rezolva o subproblemă mai mică.

Exemplu de funcție recursivă

Pentru a înțelege mai bine cum funcționează funcțiile recursive, să luăm un exemplu simplu. Să presupunem că dorim să calculăm factorialul unui număr dat.

Factorialul unui număr n este produsul tuturor numerelor între 1 și n. Putem exprima factorialul într-o formă recursivă astfel:

factorial(n) = n * factorial(n-1)

În acest caz, cazul de bază este când n este 0 sau 1, deoarece factorialul lui 0 sau 1 este 1. Cazul general este când n este mai mare decât 1, deoarece avem nevoie să apelăm funcția recursive pentru a calcula factorialul pentru n-1.

Iată cum arată implementarea funcției recursive pentru calcularea factorialului în limbajul C++:


int factorial(int n) {
  if (n == 0 || n == 1) {
    return 1;
  } else {
    return n * factorial(n-1);
  }
}

Acum putem apela această funcție pentru a calcula factorialul unui număr dat:


int numar = 5;
int rezultat = factorial(numar);
cout << "Factorialul lui " << numar << " este: " << rezultat << endl;

Output-ul acestui cod va fi:

Factorialul lui 5 este: 120

Avantajele și dezavantajele utilizării funcțiilor recursive

Utilizarea funcțiilor recursive are câteva avantaje:

  • Permite rezolvarea problemelor complexe prin împărțirea lor în subprobleme mai simple.
  • Oferă o implementare mai simplă și mai concisă pentru anumite algoritmi.

Cu toate acestea, există și câteva dezavantaje ale utilizării funcțiilor recursive:

  • Poate fi mai ineficientă decât o implementare iterativă pentru anumite probleme.
  • Poate duce la depășirea stivei de apel în cazul unor probleme cu o adâncime mare de recursivitate.

Concluzie

Funcțiile recursive reprezintă o unealtă puternică în programarea în limbajul C++. Ele permit rezolvarea problemelor complexe prin împărțirea lor în subprobleme mai simple. Cu toate că au avantaje și dezavantaje, funcțiile recursive pot fi extrem de utile în rezolvarea anumitor algoritmi.

Vă încurajăm să exersați utilizarea funcțiilor recursive în propriile proiecte și să explorați diferite probleme care pot fi rezolvate folosind această tehnică. Cu cât veți avea mai multă experiență în utilizarea funcțiilor recursive, cu atât veți deveni mai confortabil în rezolvarea problemelor complexe.

Sperăm că această lecție v-a fost utilă și vă urez succes în continuarea studiului programării în limbajul C++!