Professional Documents
Culture Documents
To znači da sumu N brojeva možemo napisati kao SumaN= SumaN-1 +N. Ovakvu relaciju
nazivamo rekurzivnom relacijom jer u svakom koraku koristimo istu formulu za manju
vrijednost parametra.
U Pascalu možemo pisati rekurzivne procedure i funkcije koje u tijelu pozivaju same
sebe za manju vrijednost parametra. Za gornji primjer to znači da možemo napisati
rekurzivnu funkciju suma(n) koja će u tijelu imati poziv same sebe za vrijednost
parametra n-1 (suma(n-1)).
function suma(n:integer):integer,
begin
if n=1 then suma:=1
else suma:=suma(n-1)+n;
end;
Važno je napomenuti da uvijek treba osigurati uvjet kod kojeg će prestati pozivanje
funkcije (u ovom slučaju kad se n smanji na 1). Naime, rekurzija se počinje izvoditi tek
kad dođe do rubnog uvjeta.
Kako se izvršava gornja funkcija za broj 5 :
1. korak suma=suma(4)+5
2. korak suma=suma(3)+4+5
kurzivnom unkcijom
3. korak suma=suma(2)+3+4+5
4. korak suma=suma(1)+2+3+4+5
5. korak suma=1+2+3+4+5
1. zadatak:
Treba izračunati produkt prvih n brojeva koristeći se rekurzivnom funkcijom.
Pn=Pn-1*n
funkction produkt(n:integer):longint;
begin
if n=1 then produkt:=1
else produkt:=produkt(n-1)*n;
end;
2. zadatak:
Program računa n-ti broj Fibonaccijevog niza (1, 1, 2, 3, 5, 8,…).
function fib(n:integer);
begin
if n=1 then fib:=1
else fib:=fib(n-1)+fib(n-2);
end;
3. zadatak:
4. zadatak:
5. zadatak:
Naravno, treba dobro odvagnuti razloge za korištenje rekurzije. Ukoliko se problem
može riješiti bez rekurzije to je bolji odabir jer s rekurzijom je vrijeme izvođnja
obično dulje.