Sunteți pe pagina 1din 2

Lucrare individuala

Tema: Recursivitate

Subcompetențe: Elaborarea funcțiilor recursive.

1. Enunțul problemei: Scrieţi o funcţie recursivă care calculează suma S(n) = 2 + 5 + 8 +...+ (3n-
1).

2. Schițarea algoritmului:
Date de intrare: n – numărul citit de la tastatură.
Date de ieșire: suma S(n) = 2 + 5 + 8 +...+ (3n-1).
Funcția mea (suma) are doar un singur parametru de valoare, care este n. Utilizând funcția if am
creat 2 cazuri, cazul cand n = 0, anume atunci se încheie funcția ,returnând valoarea 0 ,care nu
afectează rezultatul sumei (0 fiind termen neutru). În caz contrar (când n este diferit de 0) se apelează
încă odată funcția deja cu n-1 (merge în descreștere până ajunge la n=0) și se adaugă condiția pentru
sumă
(3n-1). În funcția principală (main) am declarat o variabilă, în cazul meu este n, dar ea poate fi orice
variabilă cu orice denumire permisă. Apoi de la tastatură se citește n și se apelează la funcția scrisă
mai sus. Și la ecran deja vedem rezultatul nostru.

3. Listing-ul programului:
#include <iostream>
using namespace std;
int s=0;
int suma(int n)
{
if (n==0) return 0;
else return suma(n-1)+(3*n-1);
}
int main()
{
int n;
cout<<"n=";
cin>>n;
cout<<"S="<<suma(n);
}

4. Teste/Valori de testare:

Nr. de test Date de intrare Date de ieșire


n suma(n)
1 3 15
2 2 7
3 8 100

5. Prezentarea soluției:

Test 1

Test 2

Test 3

6.Concluzie:

În concluzie vreau să spun că a fost o problemă simplă și ușor de rezolvat. Pentru mine ea nu
reprezintă ceva foarte greu. Nu a fost nimic ieșit din comun în această problemă. Greutăți în
rezolvarea ei nu am întâlnit, mulțumită faptului că în condiție era dată expresia pentru a determina
suma șirului. Deși pentru mine nu a fost o problemă grea, ea totuși necesită cunoștințe de lucru cu
funcțiile recursive.

S-ar putea să vă placă și