You are on page 1of 15

Vježba 10 – Rekurzivne funkcije

Međimursko veleučilište u Čakovcu


AISP 2012-2013
Krešimir Kolac, kkolac@mev.hr
Tema
• Implementirati nekoliko karakterističnih rekurzivnih funkcija.
• Testirati izvođenje funkcija.
• Rekurzivne funkcije koje će se implementirati:
1. Izračun faktorijela (n!)
2. Određivanje da li je n primarni (prosti) broj
3. Pronalaženje najveće zajedničke mjere dva broja (Euklidov algoritam)
4. Računanje Fibonaccijevih brojeva
5. Kreiranje Pascalovog trokuta
Rekurzivna funkcija
• Rekurzivna funkcija je svaka funkcija
koja poziva samu sebe.
• Svaka „dobra” rekurzija mora imati:
• jedan ili više rekurzivnih poziva
• uvjet prekida
• S obzirom da svaki poziv funkcije
smješta funkcijske varijable na stog
treba paziti na uvjet prekida i dubinu
do koje ide rekurzija kako bi izbjegli
grešku stack overflow!

Vizualni oblik rekurzije poznat kao Droste efekt


Deklaracija funkcija
(rekurzije.h)
Faktorijele
n n!

• Definicija:
• n! = n * (n-1)!
• 0! = 1
Primarni brojevi
• Prosti brojevi ili prim-brojevi su svi prirodni brojevi djeljivi bez
ostatka samo s brojem 1 i sami sa sobom, a veći od broja 1
• Funkcija rekurzivno provjerava i vraća da li je prvi ulazni
parametar primarni broj (drugi parametar se ispušta kod prvog
poziva, nije obavezan – vidi zaglavlje)
Primarni brojevi
Najveća zajednička mjera
(Euklidov algoritam)
• Euklidov algoritam služi nam kako bismo našli najveću zajedničku
mjeru više brojeva.
• Najveća zajednička mjera ili najveći zajednički djelitelj brojeva n1,
n2…nk jest broj m koji ima svojstva:
• m je djelitelj svakog od brojeva n1, n2 ...nk
• m je najveći broj s tim svojstvom.
• Postupak:
• Određujemo m od a i b. Dijelimo a % b, dok ostatak nije 0. Ako je ostatak
nula m je b.
• m(a, b) = m(b, a%b)
Fibonaccijevi brojevi
• Jednostavna funkcija
• Niska učinkovitost
• Ispisati prvih 20, 30, 40 Fibonaccijevih brojeva. Zaključak?
Pascalov trokut Sierpinskijev trokut

Fibonaccijevi brojevi
Pascalov trokut
Testiranje
Testiranje – rezultati
Zadaci
• Kreirati rekurzivne funkcije:
1. Potenciranje brojeva

f(x,y) = x y = x * x (y-1)

2. Ukamaćivanje glavnice na n godina uz definiranu kamatnu


stopu

povrat = f(glavnica, broj godina, godišnja stopa)

Primjer:
Ulog (Glavnica) = 10.000 Kn
Godina = 8
Godišnja kamatna stopa = 7%
Povrat = 17.181,86 Kn
Ostale karakteristične
rekurzivne funkcije za vježbu
• Permutacije riječi
• Binarno pretraživanje niza
• Tornjevi Hanoia
• Postavljanje N kraljica na
šahovsko polje tako da se ne napadaju
• Quick sort i Merge sort
• Obilasci binarnih stabala

You might also like