Sunteți pe pagina 1din 11

LP – 4 Iteratie versus Recursivitate

- Rezolvari de probleme utilizand ambele metode

- Evaluarea algoritmilor obtinuti


Ce este recursivitatea?

1 • Recursivitatea presupune execuţia repetată a


unui modul;

2 • Pe parcursul modulului se verifică o condiţie a


cărei nesatisfacere implică reluarea execuţiei
modulului de la începutul său;

3 • Directă - un modul P conţine o referinţă la el


însuşi;

4 • Indirectă – un modul P conţine o referinţă la


un modul Q ce include o referinţă la P;
Tipuri de algoritmi recursivi

• Algoritmi de traversare a unei structuri

• Algoritmi care implementează definiţii


recursive

• factorial, Euclid, ridicarea la putere

• Algoritmi de divizare

• quicksort, căutarea binară

• Algoritmi cu revenire (backtracking)

• săritura calului, problema celor 8 regine

• aranjamente (cu/fără repetiţie), combinări


“de m luate câte n”
Algoritmi iterativi/recursivi 1/6

1 Determinarea cmmdc - recursiv si


iterativ
Sa se determine cmmdc a doua numere utilizandu-
se o functie recursiva pentru calcularea cmmdc

Solutie:

Rezolvarea se bazeaza pe relatia de recurenta


cmmdc(n,m)=cmmdc(m,n modulo m). Aceasta relatie de recurenta se
introduce intr-o functie recursiva.
Algoritmi iterativi/recursivi 2/6

2 Dobanda bancara - recursiv si iterativ

La inceputul unui an se depune la o banca o suma


initiala s0. Folosind o functie recursiva sa se calculeze
suma din cont dupa un numar n de ani considerand
o dobanda p% pe an.

Solutie:

Recursivitatea functiei se bazeaza pe relatia de recurenta

s(i) := s(i-1)+s(i-1)*p/100
Algoritmi iterativi/recursivi 3/6

3 Calculul sumei termenilor seriei:

• Solutie:

• De la metoda rafinarilor succesive, de altfel, se cunoaste ca putem să


„rupem" problema în subprobleme cărora le putem oferi soluţii
distincte. Aşa că pare evident că avem nevoie de utilizarea unor funcţii
care să calculeze factorialul şi puterea unui număr .
Algoritmi iterativi/recursivi 4/6

4 Tratarea unui parametru n dupa cum urmeaza:

- Numarul cifrelor sale

- Suma cifrelor sale

• Exemplu A:

• NrCifre(123)= 1+NrCifre(12)=
1+(1+NrCifre(1))=1+1+1=3.

• Exemplu B:

• SumaCifre(123)= 3+ SumaCifre(12)=
3+(2+SumaCifre(1))=3+2+1=6.
Algoritmi iterativi/recursivi 5/6

Tratarea unui parametru n dupa cum urmeaza:


4
- produsul cifrelor sale

- oglinditul său (oglinditul lui 123 este 321);

• Exemplu A:

• ProdusCifre(123)= 3* ProdusCifre(12)=
3*(2*ProdusCifre(1))=3*2*1=6.

• Exemplu B:

• Oglinda(123)=3*102+(Oglinda(12))=300+(2*101
+Oglinda(1))=300+20+1=321.
Algoritmi iterativi/recursivi 6/6

Tratarea unui parametru n dupa cum urmeaza:


4
- Cifra de pe poziţia poz (de la dreapta la stânga)
a unui număr natural n

• Solutie:

• se scad numărul de împărţiri ale lui n la 10 din


variabila poz; dacă am ajuns la 0 se returnează (n
mod 10)
TEMA 1/2

1 Fiecare student are alocat un algoritm pe foaia de


prezenta de astazi (25.03.2019)

2 Se vor prezenta si implementa ambele variante


de algoritmi – iterative si recursiv

3 Veti contoriza urmatorii parametri:


- Durata executiei, numarul de comparatii

4 Veti trimite si schema logica desenata pe


draw.io (fisierul XML)

5 Veti trage si concluzii legate de eficienta


algoritmilor, generarea setului de date
TEMA 2/2

6 Continutul pachetului (arhiva) trimis pe mail este:

Descrierea minimala a algoritmului implementat (ambele variante) – 1pct

Schema logica (XML) (ambele variante) – 2 pct

Sursa comentata (ambele variante) – 3 pct

Exemplu de rulare (poza) (ambele variante) – 1 pct

Concluzii legate de aspectele calitative (comparative intre cele 2 variante) – 2 pct

Pachetul va fi transmis pe mail pana cel tarziu duminica 31.03.2019 ora


7
24:00 la adresa:

tema.SDA.2019@gmail.com

Mesajele sosite dupa data si ora specificate nu vor fi luate in considerare.

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