Documente Academic
Documente Profesional
Documente Cultură
Tema: Recursivitate
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:
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.