clasa a X-a
Recursivitate este proprietatea functiilor de a se autoapela (din interiorul lui se apelează pe el insusi).
Fig 2: Structura generala a unui subprogram recursiv
( returnarea nu este obligatorie )
din afara subprogramului se face un prim apel al acestuia
programul se auto-apeleaza de un anumit numar de ori
la fiecare noua auto-apelare a algoritmului, se executa din nou secventa de instructiuni ce reprezinta corpul sau, cu alte date => inlantuire
In corpul algoritmului trebuie sa existe cel putin o testare a unei conditii de oprire, la indeplinirea careia se intrerupe lantul de auto-apeluri.
Intuitiv -> identificati conditia de oprire din imaginea alaturata
Daca apelul subprogramului apare chiar in corpul sau, recursivitatea se numeste directa, altfel indirecta.
Observatii
Majoritatea algoritmilor repetitivi se pot implementa atat in varianta nerecursiva(iterativa), cat si in varianta recursiva.
Visualgo Recursion Tree
Visualgo Binary Search Tree
Meet Fractals, they won't bite
Sometimes they do
... just run the algorithm
Tema data la Matematica, Anul 1
Facultatea de Informatica
Sierpinski triangle
3D, maybe ?
Me no need recursion
Me no need fractals
Not really ...
Sierpinski Carpet
First GSM antennas
Exemplu
Ce afiseaza urmatoarea functie recursiva?
Mai multe exemple/probleme aici: http://www.geeksforgeeks.org/tag/recursion/
Ce afiseaza urmatorul subprogram cu urmatorul apel ?
f(1,3)
Desperate times, desperate measures
De avut in vedere pentru Anul 1, Structuri de Date
Facultatea de Informatica
relatia de recurenta: T(n) = 2 * T(n/2) + cn^2
Se analizeaza prin sumare:
T(n) = n^2 + 2^1 * (n/2)^2 + 2^2 * (n/4)^2 ...
Observatie - arbore de recursie
Text
a. Rezultat pentru u = 42 si v = 35?
b. Dati exemplu de 2 nr naturale u, v distincte si nenule a.i. F(u, v) sa returneze 5
c. Daca u = 14, care este cea mai mare valoare strict mai mica decat 100 pentru v, astfel incat F(u, v) sa returneze 7 ?
Tema
Realizati un subprogram C/C++ care realizeaza transformarea din baza 10 intr-o baza B (cuprinsa intre 2-16) prin metoda recursiei.
Concluzii
Resurse suplimentare
Voi pune materiale aici: https://github.com/xR86/algo/tree/master/teaching-practice/recursion
Intrebari ?
Here's a potato