Sunteți pe pagina 1din 13

Recursia

Definiie:

Recursia este situaia n care un subprogram se


autoapeleaz, fie direct, fie prin intermediul altei funcii sau proceduri.

Subprogramul care se autoapeleaz se numete recursiv

Relaii de recuren
n matematic adesea observm siruri de numere in care fiecare element al sirului se afla cunoscnd elementele anterioare
De exemplu: Progresia aritmetic: unde fiecare element este suma elementului anterior cu ratia progresiei

ai = ai-1 +d
Formule in care elementul curent se exprima prin elemenetul anterior se numesc formule de recuren

Factorialul : n!
Factorialul l putem determina prin doua modalitati Prima modalitate:

Produsul primelor n numare naturale

n! = 1*2*3**n
A doua modalitate:

Utiliznd formula de recuren

n! = n*(n-1)!

Prima modalitate: n! = 1*2*3**n


Var fact:longint; n,i:integer; Begin clrscr; write(n=); readln(n); Fact:=1; For i:=1 to n do Fact:=Fact*i; Writeln(n,!= ,Fact); Readln; End.

A doua modalitate: n! = n*(n-1)!


Utilizam recursia

uses crt; var n:integer; function Fact(i:integer):longint; begin if i=1 then fact:=1 else fact:=i*Fact(i-1); end; begin clrscr; write(n=); readln(n); Writeln(n,!= ,Fact(n)); readln; end.

Functia recursiva

Fact:=5*Fact(4)

120

Fact:=4*Fact(3)

24

Fact:=3*Fact(2)

Fact:=2*Fact(1)
2

irul lui fibonacci


n irul de numere al lui Fibonacci, fiecare numr reprezint
suma a dou numere anterioare, ncepnd cu 0 i 1. Astfel, irul incepe cu 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610 etc

Cu ct este mai mare valoarea unui numr din cadrul acestui


ir, cu att mai mult se apropie de corelaia suprem dou "numere Fibonacci" consecutive din ir, numere care se mpart prin ele nsele (aproximativ 1 : 1,618 sau 0,618 : 1).

Corelaia suprem a fost folosit pe scar larg n timpul


Renaterii, n picturi.

Utilizam recursia

uses crt; var n:integer; function Fib(n:integer):longint; begin if n=0 then Fib:=0 else if n=1 then Fib:=1 else Fib:=Fib(n-1)+Fib(n-2) end;
begin clrscr; write(n=); readln(n); Writeln(Fib(,n,)= ,Fib (n)); readln; end.

Functia recursiva

Turnurile Hanoi

Se considera trei tije verticale a, b si c(fie tija stinga a, tija mijlocie b si tija dreapta c). Pe tija a se gasesc n discuri de diametre diferite, perforate central, aranjate in ordine descrescatoare a diametrelor discurilor, de la baza catre varf. Sa se mute toate discurile de pe tija a pe tija c, folosind ca tija auxiliara tija b, respectand urmatoarele reguli: - la fiecare pas se va muta un singur disc (cel care se afla deasupra celorlalte discuri pe o tija); - un disc poate fi asezat pe o tija doar peste un alt disc avand diametru mai mare decat al sau; - n se citeste de la tastatura si rezultatul se va afisa pe ecran.

uses crt; var n:integer;


procedure muta(n,t1,t2,tm:integer); begin if n=1 then writeln(t1,' ',t2) else begin muta(n-1,t1,tm,t2); writeln(t1,' ',t2); muta(n-1,tm,t2,t1); end; end;

begin clrscr; read(n); muta(n,1,3,2); end.

Cel mai mare divisor comun


uses crt; var a,b:integer;
function cmmdc(a,b:integer):integer; begin if a=b then cmmdc:=a else if a>b then cmmdc:=cmmdc(a-b,b) else cmmdc:=cmmdc(a,b-a) end;

begin clrscr; readln(a,b); write(cmmdc(a,b); end.

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

  • Gredy
    Gredy
    Document4 pagini
    Gredy
    Vasile Groza
    Încă nu există evaluări
  • Gredy
    Gredy
    Document4 pagini
    Gredy
    Vasile Groza
    Încă nu există evaluări
  • Codul Etic
    Codul Etic
    Document16 pagini
    Codul Etic
    Centru De Vacantza Barghis
    Încă nu există evaluări
  • Sem Teor Pract 1
    Sem Teor Pract 1
    Document11 pagini
    Sem Teor Pract 1
    Vasile Groza
    Încă nu există evaluări
  • Stefan Cel Mare Leustean Andrei
    Stefan Cel Mare Leustean Andrei
    Document5 pagini
    Stefan Cel Mare Leustean Andrei
    Vasile Groza
    Încă nu există evaluări
  • Tema
    Tema
    Document23 pagini
    Tema
    Vasile Groza
    Încă nu există evaluări
  • Încetează
    Încetează
    Document1 pagină
    Încetează
    Vasile Groza
    Încă nu există evaluări
  • Vlad
    Vlad
    Document11 pagini
    Vlad
    Vasile Groza
    Încă nu există evaluări
  • Probleme
    Probleme
    Document1 pagină
    Probleme
    Vasile Groza
    Încă nu există evaluări
  • Proiect Final MTangentelor 2013
    Proiect Final MTangentelor 2013
    Document3 pagini
    Proiect Final MTangentelor 2013
    Vasile Groza
    Încă nu există evaluări
  • Chimia Test (R) Ro
    Chimia Test (R) Ro
    Document7 pagini
    Chimia Test (R) Ro
    Vasile Groza
    Încă nu există evaluări
  • Lucrare nr3
    Lucrare nr3
    Document2 pagini
    Lucrare nr3
    Vasile Groza
    Încă nu există evaluări