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
 21/28 anonim ***** válasza:

"A büntetőjogban a levéltitok megsértése a szabadság és emberi méltóság elleni, szubszidiárius jellegű bűncselekmény."

Hoppá, hoppá, hirtelen de kényes lettél az emberi méltóságra. Erre akkor is gondolhattál volna, amikor írtad az üzenetet.

2020. aug. 7. 22:33
Hasznos számodra ez a válasz?
 22/28 A kérdező kommentje:

#4, #11: Köszönöm! Valószínűleg a speciális eset lesz az, amit "denegerált esetnek" hívtunk. A kérdésem, hogy mi van akkor, ha több speciális eset is van? Akkor inkább ciklust optimális használni vagy mehet ugyanúgy a rekurzió, csak az elején lekezelem a speciális eseteket? Jól értem, hogy a speciális eset az tulajdonképpen az az eset, amikor a rekurziónak meg kell állnia, mert elértünk a végéhez?


"Á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"

Ez mindig így van? Tehát az első esetet mindig megcsinálom manuálisan, majd elindítom a rekurzió folyamatát?

2020. aug. 7. 22:33
 23/28 anonim ***** válasza:

Nekem is küldött már ilyen levelet, ahol azt mondta legyilkol vagy hasonló:D ne foglalkozz vele kérdező

Ez a két pipás egy pszichopata állat.

2020. aug. 7. 22:46
Hasznos számodra ez a válasz?
 24/28 anonim ***** válasza:
88%

21: Ez viszont nem levéltitok megsértése. Főleg hogy még a nickneved sem látszik, másrészt, ha látszana akkor se lennél beazonosítható.


Úgy látom annyit értessz a joghoz, mint az IThez. ;)

2020. aug. 7. 23:00
Hasznos számodra ez a válasz?
 25/28 anonim ***** válasza:

"Úgy látom annyit értessz a joghoz, mint az IThez. ;)"


Én annyit értek a joghoz, amennyi kell, na meg a magyar nyelvhez is, legalább annyit, hogy képes legyek helyesen írni. Veled ellentétben.


A magyar jog viszont nem várja el, hogy a levél küldője beazonosítható legyen. A magyar jog azt üldözi, aki más személyes üzenetét nyilvánosságra hozza, a szerző megkérdezése, hozzájárulása nélkül.

2020. aug. 7. 23:06
Hasznos számodra ez a válasz?
 26/28 anonim ***** válasza:
Ja látszik a leveledből mennyire értessz. :). Iszonyat gáz vagy :D. Én is kitenném most, amit egyszer írtál csak töröltem, tiltottam hogy ilyenek emberek ne írogassanak privátban akik ennyire primitívek.
2020. aug. 8. 00:04
Hasznos számodra ez a válasz?
 27/28 anonim ***** válasza:
Kell egy kis töprengés, amíg a legegyszerűbb, legelső eset megvan, amit külön kell kezelned, főleg ha nagyon eltér egy sima n==1 esettől. A kilépési feltétel is elengedhetetlen, mert egy becsavarodott rekurzív függvényt nem érdekli, mennyi memóriából gazdálkodhat.
2020. aug. 8. 07:48
Hasznos számodra ez a válasz?
 28/28 anonim ***** válasza:
100%

Végül is speciális eset ahonnan már nem történik további rekurzív hívás - ebben a szövegkörnyezetben -, ami akár innen is indulhat. Vagyis a szétválaszt példánál maradva ha eleve üres többől/listából indul a szétválasztás. A degenerált vagy más néven irreguláris eset lesz matematikában használt kifejezéssel élve.


"Ez mindig így van? Tehát az első esetet mindig megcsinálom manuálisan, majd elindítom a rekurzió folyamatát?"


Mondjuk úgy inkább hogy mindig le kell kezelni a degenerált esetet/eseteket és az általános eseteket.


"A kérdésem, hogy mi van akkor, ha több speciális eset is van? Akkor inkább ciklust optimális használni vagy mehet ugyanúgy a rekurzió, csak az elején lekezelem a speciális eseteket? "


Nem ezen fog múlni. Lehet egyetlen egyszerű if-el is több lehetséges speciális eset például ha két szám összege nem több mint egy harmadik szám a spec. eset, akkor ez elég sokféleképpen kijöhet és mégis csak egy egyszerű if a+b<=c lesz. Vagy lehet több if-el ha olyan dolog, ez ciklusba hurok ismétléses vezérlési szerkezetként jelenik meg, rekurzióban meg több speciális esetként ahol már nincs több rekurzív hívás. Ettől függetlenül (hogy mennyi fajta spec. eset van) csak maga az, hogy rekurzióval vagy ciklussal optimálisabb e van amikor elhanyagolható, de ciklussal optimálisabb mint rekurzióval. Feltéve hogy gépi erőforrásokra optimalizálunk. Ha arra hogy melyikbe könnyebb megcsinálni valamit, az adott feladattól függ. Ha viszont Haskell-be csináljuk akkor eleve nagyon jól kioptimalizálva kezeli a rekurziót. Ott ciklusokat nem is választhatsz. Statikus kód analízis használhatósága szempontjából mindenképpen jobb választás a Haskell mint pl. a C, C++ , Python. Szóval attól függ mire optimalizálsz.

2020. aug. 8. 13:26
Hasznos számodra ez a válasz?
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!