Przejdź do głównej zawartości

Rekurencja w programowaniu...

Dzisiaj chciałbym omówić jedną z trudniejszych zagadnień programowania - mianowicie rekurencję. Rekurencja to zdolność podprogramu ( funkcji lub procedury ) do wywołania samej siebie. Najprostszym przykładem użycia rekurencji jest zaimplementowanie silni.

Silnię liczby naturalnej n oznaczamy symbolem n! i definiujemy jako iloczyn kolejnych liczb :

n!=1*2*3...*(n-1)*n 

Zauważmy, że funkcję obliczającą silnię możemy następująco zaimplementować :

  • silnia(0)=1
  • silnia(n)=n*silnia(n-1)

Możemy zauważyć, że w powyższym algorytmie została użyta rekurencja. Poniżej przedstawię funkcję wyliczającą silnię zakodowaną w języku Turbo Pacal.

function silnia(n : integer) : integer;

Begin

if (n=0) then silnia:=1;

else silnia:=n*silnia(n-1);

 End

Innym ciekawym przykładem zastosowania rekurencji jest algortym wyliczający największy wspólny dzielnik dla liczb naturalnych a i b.Oto skrócony algorytm :

if a*b=0 then NWD(a,b)=a+b

else if a>=b then NWD(a,b)=NWD(a mod b,b)

else NWD(a,b)=NWD(a, b mod a)

To wszystko. Pozdrawiam.

Komentarze