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 pentrui + 1
);
- returnăm elementul curent (
- În caz contrar (
i > n
):- returnăm
0
și ne oprim.
- returnăm
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