Kezdőoldal » Számítástechnika » Programozás » Hogyan kell rekurzív függvényt...

Hogyan kell rekurzív függvényt tervezni? Hogyan kell debugolni?

Figyelt kérdés

Ha az a feladat, hogy "írjon egy rekurzív függvényt az alábbi problémára", akkor ennek hogyan kell nekiállni? Csak a tervezési elmélet érdekel, nem az, hogy egy konkrét példára mi a rekurzív megoldás, ezért nem írtam ki példát sem.


A kérdés másik fele, hogy ha adott egy rekurzív függvény, akkor azt hogyan tudom debugolni, hogy mit fog kiadni eredményként? Ha csak néhányszor hívja meg magát, akkor még oké, papíron levezetem szépen, ha mondjuk 100-szor hívja meg magát, mire eljut az eredményig, akkor ezt hogyan tudom kidebugolni?



2020. aug. 6. 18:32
1 2 3
 11/28 anonim ***** válasza:

Kérdező:

Ahogyan #4 említette, a kilépési feltételt kell kitalálnod. Ehhez mindig találni kell egy szélsőséges/speciális esetet (ciklusnál ez lenne a ciklusfeltétel). A szétválogatásnál ez az üres tömb (nincs mit szétválogatni = nem kell semmit csinálni), minden más esetben szét kell válogatni a tömb elemeit.

Ezt a vizsgálatot teszik általában a rekurzív függvény elejére (lásd #4-es programja). Ennek az az oka, hogy például üres is lehet az input tömböd (tehát maga a feladat inputja a/egy szélsőséges eset, nem pedig az X. rekurzió után jut el oda a program).

A speciális eseten kívül az általános/ismétlődő részt kell még kitalálni (ciklusnál ez lenne a ciklusmag).


Tehát a konkrét példádnál, azaz a szétválogatásnál:

SPECIÁLIS eset: üres az input tömb, "nem csinálsz semmit" (attól is függ, hogy mi a feladat, ha például az, hogy 2 másik tömbbe válogasd szét az inputot, akkor az eredmény 2 üres tömb lesz - mint #4 programjánál; de ha például az a feladat, hogy az input tömbben helyben cserélgesd ki az elemeket - elöl a párosok, hátul a páratlanok pl. - akkor nem kell semmit sem csinálni üres tömb esetén)

ÁLTALÁNOS eset: az input első elemét szétválogatod és a többi elemre meghívod rekurzívan a szétválogatás függvényét

2020. aug. 7. 13:21
Hasznos számodra ez a válasz?
 12/28 anonim ***** válasza:
A rekurziót is tudni kell használni. Egy tömb elemeinek a szétválogatásához, rendezéséhez...stb, nem optimális rekurzív függvény írni. Erre már megvannak a legoptimálisabb algoritmusok, csak használni kell őket.
2020. aug. 7. 13:41
Hasznos számodra ez a válasz?
 13/28 anonim ***** válasza:
100%

@13:12 Csak kiegészítésképpen a közvetett rekurzióra:

[link]

3.1. Páros-e páros és páratlan függvény rekurzívan egymás hívása és sosem önmaga hívása nagyon jó példa rá.

Csak ki ne találd már hogy semmi se jó csak amit te hiszel, hogy csak te vagy az egyedüli hiteles forrás!

Igen jártam egyetemre régen, onnan van ismeretem többek között a rekurzióról is meg sok más "finomságról" is.


Egyébként nagyon jó heurisztikát ad a wikipedia, adott dologgal kapcsolatban hogy hogy is van az, a mentén el lehet indulni. Én nem a mentén indultam el, én fejből indultam el, az csak az volt amit legelőször megtaláltam reflektálva a hozzászólásra ami nem igaz.

Különben meg szabad idődbe kezdheted gyűjteni hogy mennyi dolog van rosszul írva a wiki-be és mennyi nem lehet strigulázni. Ha rosszul van akkor fel e van hívva rá a figyelem stb, de most ne menjünk ebbe bele, nem ide tartozik, már nagyon off topik.

2020. aug. 7. 13:50
Hasznos számodra ez a válasz?
 14/28 anonim ***** válasza:
Én csak azt mondtam, hogy az nem hiteles forrás. Bárki által szerkeszthető, átírható. Ha diplomamunkádba wikipediara hivatkoznál akkor visszadobnák. Ha már az ember forrásra hivatkozik azt úgy tegye, ahogy szokás és ami elfogadható forrás! :).
2020. aug. 7. 13:54
Hasznos számodra ez a válasz?
 15/28 anonim ***** válasza:
Azt te magad is megtehetted volna hogy megnézd hogy mennyire hiányosak az ismereteid vagy nem vagy pontosak vagy nem, nem diplomamunkát írok hanem ide írok. Én se vagyok tévedhetetlen ha én tévedek akkor azt leírom, ha gyatra volt az ismeretem a témába is azért írtam hülyeséget akkor azt is megírom , hogy igazad volt, még akkor is ha akármilyen kezdőnek van igaza, nem teszek különbséget ilyen tekintetben. Mondjuk amit nem tudok oda nem is szoktam hozzászólni, esetleg kérdés formájában.
2020. aug. 7. 14:08
Hasznos számodra ez a válasz?
 16/28 anonim ***** válasza:
Nem azt támadom, amit írtál, szimplán csak azt mondtam, hogy a wikipedia nem hiteles forrás. :). Akkor a gyakorikérdésem sem az. :D. De mégegyszer mondom, nem a magyarázataid támadtam. ;)
2020. aug. 7. 14:11
Hasznos számodra ez a válasz?
 17/28 anonim ***** válasza:
0%

A wikipédia az internetből, mint információs bázisból táplálkozik. Ami a wikin megtalálható, az az interneten is megtalálható és amennyire hiteles forrás, annyira hiteles a wikipédia is. A magyar nyelvű szócikkek nem ritkán az angol szócikk buta, suta, néha nevetésre ingerlő fordításai. Általánosan informálja azokat, akik erre részorulnak, de szakmaiságot elvárni azoktól az oldalaktól nem lehet, még akkor sem, ha egy-egy szócikket érzékelhetően kompetens ember írt meg, vagy ilyen ember munkájából merítettek.


Veled meg, hosszú lélegzetű, az a baj, hogy lépten nyomon belefűzöl a mondandódba olyasmit, ami butaság, és ezzel el is árulod, hogy laikus vagy. Nem gond az ha téved valaki, hiszen ez mindenkivel előfordul, de te úgy tévedsz, ahogy egy szakmabeli egyszerűen nem tudna.

2020. aug. 7. 15:19
Hasznos számodra ez a válasz?
 18/28 anonim ***** válasza:
Na ebből látszik, hogy még diplomamunkát nem csináltál. :). Ott kerek perec a konzulensed is megmondja, hogyha wikipédiat jelölsz meg forrásként akkor vissza lesz dobva a munkád.
2020. aug. 7. 17:40
Hasznos számodra ez a válasz?
 19/28 A kérdező kommentje:

Köszönöm a válaszokat! Megpróbálom megemészteni, amit írtatok. :D


A 2 pipás kollégának mondom, hogy húzzon innen máshova, mert úgy sem fogom szétidegeskedni magam a trollkodásán. Szoktam olvasni a kommentjeit a többi kérdés alatt és úgy látom, hogy itt is csak az észosztás megy számára.

2020. aug. 7. 17:45
 20/28 A kérdező kommentje:

Elfogtam egy üzenetet, azt hiszem ez mindent elmond...

[link]

2020. aug. 7. 21:40
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!