hikghb németh gábor luf9nv simon attila
DESCRIPTION
HÁZI FELADAT. HIKGHB Németh Gábor LUF9NV Simon Attila. A programozás al apjai 1. 10. előadás. Híradástechnikai Tanszék. Rekurzió. 1. 5. 2. 7. 6. 4. 3. Bináris fa bejárása - preorder (gyökér – bal gyerek – jobb gyerek) mentés - visszaállítás. 4. 6. 2. 7. 5. 3. 1. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/1.jpg)
HIKGHB Németh Gábor
LUF9NV Simon Attila
![Page 2: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/2.jpg)
A programozás alapjai 1
10. előadás
Híradástechnikai Tanszék
![Page 3: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/3.jpg)
Rekurzió
![Page 4: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/4.jpg)
Bináris fa bejárása
- preorder
(gyökér – bal gyerek – jobb gyerek) mentés - visszaállítás
1
52
7643
![Page 5: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/5.jpg)
Bináris fa bejárása
- inorder
(bal gyerek – gyökér – jobb gyerek) rendezés
4
62
7531
![Page 6: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/6.jpg)
Bináris fa bejárása
- posztorder
(bal gyerek – jobb gyerek – gyökér) képlet kiértékelése
7
63
5421
![Page 7: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/7.jpg)
Bináris fa bejárása
typedef … adat; typedef stuct fa {
adat a; struct fa *b,*j;
} faelem; void feldolgoz (adat d) { … }
![Page 8: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/8.jpg)
Bináris fa bejárása
- preorder
void bejar(faelem *p) void bejar(faelem *p) { { if (p) feldolgoz(p->a); { if (p->b) bejar(p->b); feldolgoz(p->a); if (p->j) bejar(p->j); bejar(p->b); } bejar(p->j); } }
![Page 9: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/9.jpg)
Bináris fa bejárása
- inorder
void bejar(faelem *p) void bejar(faelem *p) { { if (p) if (p->b) bejar(p->b); { feldolgoz(p->a); bejar(p->b); if (p->j) bejar(p->j); feldolgoz(p->a); } bejar(p->j); } }
![Page 10: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/10.jpg)
Bináris fa bejárása
- posztorder
void bejar(faelem *p) void bejar(faelem *p) { { if (p) if (p->b) bejar(p->b); { if (p->j) bejar(p->j); bejar(p->b); feldolgoz(p->a); bejar(p->j); } feldolgoz(p->a); } }
![Page 11: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/11.jpg)
Közvetlen rekurzió:
egy szegmens hivatkozik önmagára
![Page 12: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/12.jpg)
Közvetett rekurzió:
szegmensek egymásra hivatkozásaiban kör van
![Page 13: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/13.jpg)
A rekurzió célja:
![Page 14: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/14.jpg)
A rekurzió célja:
A feladat méretének, vagy bonyolultságának csökkentése egy kezelhető szintig.
![Page 15: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/15.jpg)
A rekurzió kritikus pontja:
![Page 16: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/16.jpg)
A rekurzió kritikus pontja:
A leállás feltételének teljesülését minden esetben biztosítani kell.
![Page 17: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/17.jpg)
A rekurzió nagy előnye
![Page 18: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/18.jpg)
A rekurzió nagy előnyeaz elegancia
![Page 19: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/19.jpg)
A rekurzió nagy előnyeaz elegancia
Néhány sorban,könnyen érthetőkódot írhatunk.
![Page 20: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/20.jpg)
A rekurzió nagy hátránya
![Page 21: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/21.jpg)
A rekurzió nagy hátrányaa csábítás
![Page 22: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/22.jpg)
A rekurzió nagy hátrányaa csábítás
Akkor is használjuk,ha kevéssé hatékony,
sőt pazarló.
![Page 23: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/23.jpg)
Mikor ne használjunk rekurziót?
![Page 24: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/24.jpg)
Mikor ne használjunk rekurziót?
Ha az eredmény zárt alakban is előállítható.
![Page 25: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/25.jpg)
Mikor ne használjunk rekurziót?
Ha az eredmény zárt alakban is előállítható. Pl.: számtani sorozat n-edik eleme
![Page 26: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/26.jpg)
Mikor ne használjunk rekurziót?
Ha az eredmény zárt alakban is előállítható. Pl.: számtani sorozat n-edik eleme
Ha a feladat ciklusszervezéssel is könnyen megoldható.
![Page 27: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/27.jpg)
Mikor ne használjunk rekurziót?
Ha az eredmény zárt alakban is előállítható. Pl.: számtani sorozat n-edik eleme
Ha a feladat ciklusszervezéssel is könnyen megoldható. Pl.: faktoriális számítás
![Page 28: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/28.jpg)
A rekurzió és a ciklus kapcsolata
![Page 29: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/29.jpg)
A rekurzió és a ciklus kapcsolata
Minden ciklus megvalósítható rekurzióval.
![Page 30: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/30.jpg)
A rekurzió és a ciklus kapcsolata
Minden ciklus megvalósítható rekurzióval.
Minden rekurzió megvalósítható ciklussal és segédváltozókkal.
![Page 31: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/31.jpg)
Minden ciklus megvalósítható rekurzióval.
A
C
B
Vége
A
B
C
Vége
A
![Page 32: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/32.jpg)
Minden rekurzió megvalósítható ciklussal és segédváltozókkal.
![Page 33: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/33.jpg)
Minden rekurzió megvalósítható ciklussal és segédváltozókkal.
A megoldásra rátalálninéha nem könnyű feladat!
![Page 34: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/34.jpg)
Minden rekurzió megvalósítható ciklussal és segédváltozókkal.
A megoldásra rátalálninéha nem könnyű feladat!
Lássunk példát erre is, arra is!
![Page 35: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/35.jpg)
Egy könnyű probléma:
![Page 36: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/36.jpg)
Egy könnyű probléma:
A Fibonacci számsorozat
![Page 37: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/37.jpg)
Egy könnyű probléma:
A Fibonacci számsorozat
1 1 2 3 5 8 13 21 34 55 …
![Page 38: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/38.jpg)
Egy könnyű probléma:
A Fibonacci számsorozat
1 1 2 3 5 8 13 21 34 55 …
A sorozat harmadik elemétől kezdveminden elem az előző kettő összege.
![Page 39: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/39.jpg)
A Fibonacci számsorozat
Rekurzív megvalósítás
fib(unsigned n){ if (n<2) return n; return fib(n-2) + fib(n-1);}
![Page 40: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/40.jpg)
A Fibonacci számsorozat
Megvalósítás ciklussal
fib(unsigned n){ int regi=0,uj=1; for(n--;n;n--) { uj+=regi; regi=uj-regi;} return uj;}
![Page 41: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/41.jpg)
Egy nehéz probléma:
![Page 42: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/42.jpg)
Egy nehéz probléma:
Hanoi tornyai
![Page 43: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/43.jpg)
Egy nehéz probléma:
Hanoi tornyai
A MESE
![Page 44: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/44.jpg)
Hanoi tornyai
Rekurzív megvalósítás
void hanoi(unsigned hanyat, char honnan,char hova){char seged=3*′B′-honnan-hova;if (--hanyat) hanoi(hanyat,honnan,seged);printf(″%c %c\n″,honnan,hova);if (hanyat) hanoi(hanyat,seged,hova);}
![Page 45: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/45.jpg)
4 A B 3 A C 2 A B 1 A C
1 A B
1 C B
1 A C
2 B C 1 B A
1 B C
1 A C
1 A B
3 C B 2 C A 1 C B
1 C A
1 B A
1 C B
2 A B 1 A C
1 A B
1 C B
![Page 46: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/46.jpg)
Hanoi tornyai
Megvalósítás ciklussal
?
![Page 47: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/47.jpg)
4 A B 3 A C 2 A B 1 A C
1 A B
1 C B
1 A C
2 B C 1 B A
1 B C
1 A C
1 A B
3 C B 2 C A 1 C B
1 C A
1 B A
1 C B
2 A B 1 A C
1 A B
1 C B
![Page 48: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/48.jpg)
4 A B 3 A C 2 A B 1 A C
1 A B
1 C B
1 A C
2 B C 1 B A
1 B C
1 A C
1 A B
3 C B 2 C A 1 C B
1 C A
1 B A
1 C B
2 A B 1 A C
1 A B
1 C B
![Page 49: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/49.jpg)
A C
A B
C B
A C
B A
B C
A C
A B
C B
C A
B A
C B
A C
A B
C B
![Page 50: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/50.jpg)
1 A C
2 A B
3 C B
4 A C
5 B A
6 B C
7 A C
8 A B
9 C B
10 C A
11 B A
12 C B
13 A C
14 A B
15 C B
![Page 51: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/51.jpg)
0001 A C
0010 A B
0011 C B
0100 A C
0101 B A
0110 B C
0111 A C
1000 A B
1001 C B
1010 C A
1011 B A
1100 C B
1101 A C
1110 A B
1111 C B
![Page 52: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/52.jpg)
0001 A C 0
0010 A B 1
0011 C B 0
0100 A C 2
0101 B A 0
0110 B C 1
0111 A C 0
1000 A B 3
1001 C B 0
1010 C A 1
1011 B A 0
1100 C B 2
1101 A C 0
1110 A B 1
1111 C B 0
![Page 53: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/53.jpg)
0001 A C 0
0010 A B 1
0011 C B 0
0100 A C 2
0101 B A 0
0110 B C 1
0111 A C 0
1000 A B 3
1001 C B 0
1010 C A 1
1011 B A 0
1100 C B 2
1101 A C 0
1110 A B 1
1111 C B 0
![Page 54: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/54.jpg)
0001 A C 0
0010 A B 1
0011 C B 0
0100 A C 2
0101 B A 0
0110 B C 1
0111 A C 0
1000 A B 3
1001 C B 0
1010 C A 1
1011 B A 0
1100 C B 2
1101 A C 0
1110 A B 1
1111 C B 0
![Page 55: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/55.jpg)
0001 A C 0
0010 A B 1
0011 C B 0
0100 A C 2
0101 B A 0
0110 B C 1
0111 A C 0
1000 A B 3
1001 C B 0
1010 C A 1
1011 B A 0
1100 C B 2
1101 A C 0
1110 A B 1
1111 C B 0
![Page 56: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/56.jpg)
0001 A C 0
0010 A B 1
0011 C B 0
0100 A C 2
0101 B A 0
0110 B C 1
0111 A C 0
1000 A B 3
1001 C B 0
1010 C A 1
1011 B A 0
1100 C B 2
1101 A C 0
1110 A B 1
1111 C B 0
![Page 57: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/57.jpg)
0001 A C 0
0010 A B 1
0011 C B 0
0100 A C 2
0101 B A 0
0110 B C 1
0111 A C 0
1000 A B 3
1001 C B 0
1010 C A 1
1011 B A 0
1100 C B 2
1101 A C 0
1110 A B 1
1111 C B 0
![Page 58: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/58.jpg)
A páratlan lépéseket a legkisebb koronggal tesszük meg, mindig ugyanarra.
A párosadik lépések is egyértelműen meghatározottak:
- Tudjuk, hogy merre kell lépni.- Amivel léptünk, azzal nem léphetünk.- A legkisebb korongra nem rakodhatunk.
![Page 59: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/59.jpg)
Hanoi tornyai
Megvalósítás ciklussal
- Ha n korong van, 2n-1 lépés kell.- Minden páratlanadik lépést a legkisebb koronggal kell megtenni.- Ha n páratlan, A-B-C-A sorrendben lép, ha n páros, A-C-B-A sorrendben lép.- Ha a következő lépést ugyanarra kell megtenni, oda kell lépni, ahonnan léptünk.- Ha a következő lépést ellenkező irányban kell megtenni, onnan kell lépni, ahonnan léptünk.
![Page 60: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/60.jpg)
Hogyan lehet megvalósítania rekurziót?
![Page 61: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/61.jpg)
Hogyan lehet megvalósítani,hogy a függvénynek egyszerre
több példánya éljen?
![Page 62: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/62.jpg)
Ezt már tudjuk!
![Page 63: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/63.jpg)
A nagy ÖTLET: CSAK EGY VEREM KELL!
Kalkulátor verem = ahol a kifejezések kiértékelése történik
Hívás verem = ahol a visszatérési címet tároljuk
Paraméter verem = ahol a paramétereket adjuk át
Ha már lúd, legyen kövér!Tároljuk itt a szegmensek belső változóit is!
![Page 64: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/64.jpg)
Mit kell tudnia a függvényről a fordítóprogramnak,
hogy meg tudja hívni?
![Page 65: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/65.jpg)
azonosítójáta megvalósító szubrutin címét
![Page 66: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/66.jpg)
paraméterezésétaz átadandó paraméterek típusát
![Page 67: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/67.jpg)
Ez képezi a függvény deklarációját
![Page 68: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/68.jpg)
Mit nem szükséges tudniaa függvényről
a fordítóprogramnak, hogy meg tudja hívni?
![Page 69: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/69.jpg)
megvalósításátaz végrehajtandó utasításokat
![Page 70: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/70.jpg)
Ez képezi a függvény definícióját
![Page 71: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/71.jpg)
Hogyan definiálunk függvényt?
![Page 72: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/72.jpg)
Ezt is tudjuk!
![Page 73: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/73.jpg)
Függvény definíciója
<visszatérési érték típusa><függvény azonosítója> (<formális paraméterek listája>)<blokk>
![Page 74: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/74.jpg)
A közvetlen rekurzióhoz ez több mint elég!
![Page 75: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/75.jpg)
Közvetlen rekurzió:
egy szegmens hivatkozik önmagára
![Page 76: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/76.jpg)
De mi a helyzet a közvetett rekurzióval?
![Page 77: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/77.jpg)
Közvetett rekurzió:
szegmensek egymásra hivatkozásaiban kör van
![Page 78: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/78.jpg)
Ez a„tyúk vagy a tojás”
esete!
![Page 79: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/79.jpg)
Megoldás:
Válasszuk szét a függvénydeklarációját
ésdefinícióját!
![Page 80: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/80.jpg)
Függvény definíciója
<visszatérési érték típusa><függvény azonosítója> (<formális paraméterek listája>)<blokk>
![Page 81: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/81.jpg)
Függvény deklarációja
<visszatérési érték típusa><függvény azonosítója> (<paraméterek listája>);
![Page 82: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/82.jpg)
Függvény deklarációja
<visszatérési érték típusa><függvény azonosítója> (<paraméterek listája>);
A blokk helyén ; áll.
![Page 83: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/83.jpg)
Függvény deklarációja
<visszatérési érték típusa><függvény azonosítója> (<paraméterek listája>);
A paraméterek nevét a fordítóprogram nem veszi figyelembe, ezért elhagyható, vagy tetszőleges nevet használhatunk.
![Page 84: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/84.jpg)
A függvény deklarációjaminden a híváshoz szükséges
információt tartalmaz.
A függvény prototípusánakis nevezzük.
Másként a függvény fejléce.
![Page 85: HIKGHB Németh Gábor LUF9NV Simon Attila](https://reader034.vdocuments.site/reader034/viewer/2022051316/56815012550346895dbdf53d/html5/thumbnails/85.jpg)
A függvények tetszőleges sorrendben hívhatják egymást,
ha a fejléceket kigyűjtjük,és a kód elejére írjuk.
Jó szokás egy fájlba írni,és #include direktívával
hivatkozni rá.