Suma elementelor unui vector recursiv în C++

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

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

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:
    • returnăm elementul curent (a[i]), la care adunăm suma elementelor de după (apelând funcția pentru i + 1);
  • În caz contrar (i > n):
    • returnăm 0 și ne oprim.

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++.

#include <iostream>

using namespace std;

int sumaElementelor(int a[], int n, int i) { //Șirul, lungimea și indicele curent
    if(i > n) { //Dacă am terminat șirul, atunci ne oprim din executat
        return 0; //Similar cu break
    }
    return a[i] + sumaElementelor(a, n, i + 1); //Returnăm elementul curent + suma elementelor de după
}

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 suma elementelor șirului
    cout << sumaElementelor(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