Hogyan kell rekurzív függvényt tervezni? Hogyan kell debugolni?
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?
"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.
#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?
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.
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. ;)
"Ú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.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!