1 / 11

R E C U R S I A

R E C U R S I A. RECURSIA DIRECTĂ. Continuaţi enunţurile:. Un subprogram este……. Subprogramele sunt de 2 tipuri ……….. Funcţia este ……. Procedura este …. Apelul unei subprogram se face prin intermediul ... Tipul rezultatului unei funcţii poate fi ...

Download Presentation

R E C U R S I A

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RECURSI A RECURSIA DIRECTĂ

  2. Continuaţi enunţurile: • Un subprogram este……. • Subprogramele sunt de 2 tipuri ……….. • Funcţia este ……. • Procedura este …. • Apelul unei subprogram se face prin intermediul ... • Tipul rezultatului unei funcţii poate fi ... • Funcţia returnează rezultatul prin…. • Procedura returnează rezultatul prin… • Parametri actuali sunt ….. • Corespondenţa între un parametru actual şi un parametru formal se face….

  3. CARACTERISTICILE Rezultatul se întoarce prin nume Se defineşte în partea declarativă a programului Returnează 0,1sau mai multe rezultate Extinde noţiune de expresie Estinde noţiunea de instrucţiune Variabile locale Rezultatul se intoarce prin parametru variabilă Poate fi apelat de el însuşi Lista parametrilor formali Returnează un singur rezultat Nume comune FUNCŢII PROCEDURE

  4. Tema: “RECURSIA” • Subcompetenţe: • Prelucrarea datelor cu ajutorul subprogramelor predefinite şi a subprogramelor elaborate de către utilizator. • Organizarea comunicării între programul / subprogramul apelant şi subprogramul apelat • Proiectarea structurală a algoritmului şi a programului. • Utilizarea recursiei pentru rezolvarea problemelor • Obiective operaţionale: • O1 – să definească termenii: program, subprogram, funcţie procedură, apel, parametri valoare, parametri variabilă, parametri formali, parametri actuali, variabile globale, variabile locale, • O2 – să determine corectitudinea antetelor şi apelurilor de subprograme; • O3 – să poată evalua programe ce utilizează subprograme recursive, să determine valoarea funcţiei pentru anumite date de intrare; • O4 – să explice algoritmul subprogramului recursiv, modul de execuţie al subprogramului recursiv; • O5 – să elaboreze programe în care se utilizează subprograme recursive

  5. DEFINIŢII ŞI IDEI ANCORĂ • Un subprogram se numeşte recursiv dacă el se autoapelează pe el însuşi. • În matematică relaţiile recursive se numesc relaţii de recurenţă. (Unele şiruri pot fi definite cu ajutorul unor formule în funcţie de termenul sau termenii precedenţi). Spre exemplu şirul numerelor naturale: 1,2,3… şirul numerelor pare: 2,4,6,8,10... şirul Fibonacci 1,1,3,5,8,13,21...(primii doi termeni sunt egali cu 1, iar fiecare următor terme va fi egal cu suma a doi termeni precedenţi)

  6. Scrieţi o funcţie nerecursivă care calculează valoarea lui N! Function fact(N:integer):integer; Var P, i: integer; Begin P:=1; For i:=1 to N do P:=P*i Fact:=P; End; Pentru N=5 P=1 i=1 P:=P*i P=1*1=1 i=2 P:=P*i P=1*2=2 i=3 P:=P*i P=2*3=6 i=4 P:=P*i P=6*4=24 i=5 P:=P*i P=24*5=120

  7. Calculul lui N! recursiv • Function fact(N:integer):integer; • Begin • If N=0 then fact:=1 • else fact:=N* fact(N-1); • End; 5!=5*24=120 5!= 5*4! 4!=4*6=24 4!=4*3! 3!=3*2! 3!=3*2=6 2!=2*1! 2!=2*1=2 1!=1*0! 1!=1*1=1 0!=1 0!=1

  8. Scrieţi un program care utilizează funcţia recursivă de calcul a lui N! Program p1; Var x,f: integer; Function fact(N:integer):integer; Begin If N=0 then fact:=1 else fact:=N* fact(N-1); End; Begin Write(‘da valoarea lui x’); readln (x); f:= fact (x); Writeln (f); End. Analizaţi execuţia programului , dacă condiţia va fi N<0 Pentru lecţia practică : Executaţi pentru N=0, 5, 7, 8,10

  9. Se consideră funcţia F de mai jos definită recursiv. Ce va returna apelul F(7)? • Function F (n:integer):integer; • Begin • If n=0 then F:=0 • else if (n mod 2=0) then F:=F(n-1)+n • else F:=F(n-1) - n • End; • -28 • 28 • -4 • 4 • 0

  10. Să se scrie un program ce calculează suma primilor n termeni din şirul numerelor naturale utilizînd o funcţie recursivă / iterativă Program suma_iterativ; Var n: integer; Function S(k: integer):integer; Var i:integer; Begin S:=0; For i:= 1 to k do S:=S+i End; Begin Write(‘ n=‘); readln(n); Writeln(‘suma este’ , S(n)); End. Program suma_recursiv; Var n: integer; Function S(k: integer):integer; Begin If k=0 then S:=0 else S:=k+S(k-1); End; Begin Write(‘ n=‘); readln(n); Writeln(‘suma este’ , S(n)); End.

  11. Concluzii: • Un algoritm recursiv are acelaşi efect ca şi un ciclu: repetă execuţia unei anumite secvenţe de instrucţiuni • E necesar ca repetarea să nu fie la infinit, adică trebuie să existe o condiţie de oprire, cazul elementar ce poate fi calcul direct • În majoritatea cazurilor algoritmii recursivi pot fi înlocuiţi cu algoritmi nerecursivi (iterativi), la dorinţa programatorului. • Varianta recursivă este recomandată în special pentru problemele definite prin relaţii de recurenţă, care permite o formulare a rezultatelor mult mai clară şi mai concisă: • Avantajele recursiei: • Structura programului – simplă • Volumul de scriere a programului - mic • Dezavantajele recursiei: • Necesarul de memorie – mare • Testarea şi depănarea programelor - complicat

More Related