online: 11; azi: 487; total: 52493 Manual clasa a x a - Tehnici de implementarea algoritmilor - Recursivitate

Manual clasa a X a

Tehnici de implementarea algoritmilor

Recursivitate

Pentru un vector cu elemente întregi scrieţi un subprogram recursiv care calculează suma elementelor sale şi un subprogram recursiv care calculează suma elementelor pozitive din vector.
# include <iostream>
using namespace std;
// Subprogram recursiv pentru calcularea sumei elementelor unui vector
int suma ( int v[], int n) {
if (n == 0 ) {
return 0 ;
} else {
return v[n -1 ] + suma (v, n -1 );
}
}
// Subprogram recursiv pentru calcularea sumei elementelor pozitive dintr-un vector
int sumaPozitive ( int v[], int n) {
if (n == 0 ) {
return 0 ;
} else {
int s = sumaPozitive (v, n -1 );
if (v[n -1 ] > 0 ) {
s += v[n -1 ];
}
return s;
}
}
// Exemplu de utilizare a celor două subprograme
int main () {
int v[] = { 1 , 2 , -3 , 4 , -5 , 6 };
int n = 6 ;
cout << "Suma elementelor: " << suma (v, n) << endl;
cout << "Suma elementelor pozitive: " << sumaPozitive (v, n) << endl;
return 0 ;
}

Subprogramul suma() calculează suma tuturor elementelor din vector, utilizând o implementare simplă a recursivității. Dacă vectorul este gol, se returnează 0, altfel se calculează suma elementelor din vectorul trunchiat cu un element (prin apelul recursiv) și se adaugă ultimul element al vectorului.
Subprogramul sumaPozitive() calculează suma tuturor elementelor pozitive din vector, utilizând o implementare recursivă similară cu cea a subprogramului suma() . Dacă vectorul este gol, se returnează 0, altfel se calculează suma elementelor pozitive din vectorul trunchiat cu un element (prin apelul recursiv), iar dacă ultimul element este pozitiv, se adaugă și acesta la sumă.