Afișarea elementelor unui vector recursiv în C++

Dându-se un șir a[] cu n elemente, să se afișeze pe ecran elementele sale, folosind o funcție recursivă.

Exemplu. Pentru a = (1, 2, 10, 9, 8), pe ecran se afișează 1 2 10 9 8.

Abordarea problemei

Vom crea un subprogram care are ca parametri următorii:

  • Vectorul nostru (a);
  • Lungimea sa (n);
  • Poziția curentă pe care ne aflăm (i);

Vom simula o structură repetitivă de tip for, astfel:

  • Dacă i ≤ n, atunci:
    • afișăm elementul curent (a[i]);
    • apelăm funcția pentru i + 1;
  • În caz contrar (i > n):
    • ne oprim.

Funcția pe care o folosim va fi de tip void, pentru că nu trebuie să returnăm nimic. De asemenea, vom indexa șirul de la 1, însă rezolvarea este foarte asemănătoare și pentru indexarea de la 0.

Implementare în C++

Iată rezolvarea în C++. Ne folosim de return pentru a ne opri din executat liniile următoare — exact ca și break din structurile repetitive.

#include <iostream>

using namespace std;

void afisare(int a[], int n, int i) { //Șirul, lungimea și indicele curent
    if(i > n) { //Dacă am terminat șirul, atunci ne oprim din executat
        return; //Similar cu break
    }
    cout << a[i] << " "; //Afișăm numărul curent și apelăm funcția pentru elementele următoare
    afisare(a, n, i + 1);
}

int main()
{
    //Declarăm și citim șirul nostru (indexat de la 1)
    int n, a[101];
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    //Afișăm șirul, folosind funcția creată
    afisare(a, n, 1);
    return 0;
}

Alte resurse sau bibliografie

DS

Autorul acestei lecții

Dominic Satnoianu

Această lecție a fost redactată de către Dominic Satnoianu.

© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.

Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.

Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.

Comentarii 0

Autentifică-te pentru a putea comenta.

Autentifică-te