Documente Academic
Documente Profesional
Documente Cultură
Grigore ALBEANU
http://www.ad-astra.ro/galbeanu/
Cuprins
z Noiunea de recursivitate
z Algoritmi recursivi / Funcii recursive
z Implementarea algoritmilor recursivi n
limbajele de programare
z Metoda Divide et impera
z Complexitatea algoritmilor recursivi
z Recursivitate versus Iterativitate
Noiunea de recursivitate
z n general, prin recursivitate se
nelege proprietatea intrinsec a
unei entiti (fenomen, proces etc.)
de a fi definit i/sau analizat
folosind entiti de aceeai natur.
z Un algoritm n a crui descriere este
necesar referirea la el nsui se
numete algoritm recursiv. Aceast
clas de algoritmi este ntlnit
frecvent.
z Recursivitatea face posibil
prezentarea unor descrieri simple i
elegante ale operaiilor algoritmului.
z Subprogramele recursive, dei
simple, necesit costuri manifestate
n consum de resurse (timp,
memorie).
http://upload.wikimedia.org/wikipedia/commons/f/f7/RecursiveTree.JPG
Algoritmi recursivi / Funcii recursive - 1
http://en.wikipedia.org/wiki/Fibonacci; http://en.wikipedia.org/wiki/David_Hilbert
Funcii recursive pentru calculul factorialului 2a
Recursivitate binar, recursivitate
mutual/indirect (studiu: n timpul apelului) 2b
Recursivitate imbricat (nested) 2c
Algoritmi recursivi / Funcii recursive - 3
Exemplul 2:
http://en.wikipedia.org/wiki/Recursion_%28computer_science%29
Implementarea algoritmilor recursivi n limbajele de
programare limbajul C: Exemple comentate
http://andrei.clubcisco.ro/cursuri/1pc/co/curs12.pdf
http://www.cs.utah.edu/plt/slideshow/cs3520-f02-slides/lecture22.pdf
De vazut: http://plato.stanford.edu/entries/recursive-functions/
Metoda Divide et impera - Principiul
Metoda Divide et impera Exemple
Sortare prin
interclasare
Grigore Albeanu, Luminita Radu, Luminita Rapeanu, Alexandru Averian. Tehnici de programare. Romania de Maine, 2003.
Limbaje nerecursive
http://www.ibiblio.org/pub/languages/fortran/ch1-12.html
Eliminarea recursivitii
z Modalitile n care se elaboreaz algoritmii
nerecursivi (iterativi) asociai definiiilor
recursive sunt: metoda stivei, metoda tabelelor
i metoda parcurgerii arborelui asociat.
z Metoda stivei simuleaz tratarea
recursivitii de ctre compilator.
z Metoda tabelelor construiete soluia
ascendent sau descendent, n funcie de
varianta aleas.
z Metoda arborelui asociat (exemplu: arbori de
puteri pentru calcul xn).
Metoda stivei: Funciile AC i MP
Algoritmul AC1
Metoda tabelrii AC- precizri
z Complexitatea mare a algoritmului Ac1 este datorat
faptului c se calculeaz repetat anumite valori.
z Studiind definiia funciei Ac observm c irurile
A(m,.) pentru m = 0, 2, ... sunt din ce n ce mai
rarefiate, fiecare - cu excepia primului, fiind un subir
al irului precedent. Pentru clarificare prezentm
nceputul subirurilor A(m,.) pentru m = 0, 1, 2, 3 i 4.
Metoda tabelelor Ac2
z Pentru a calcula
valorile funciei Ac
este suficient s
utilizm dou
tablouri.
z Algoritmul AC2
evalueaz funcia Ac
prin aceast metod.
z Algoritmul Ac2,
necesit spaiu de
stocare de ordinul
O(m). Timpul de
calcul pentru
determinarea valorii
Ac(m,n) este de
ordinul O(mAc(m,n)).
Algoritmul AC2
Implementarea algoritmilor recursivi
aspecte tehnice aa nu! De ce?
http://andrei.clubcisco.ro/cursuri/1pc/co/curs12.pdf