|
23.
11.
2009 22:08
(Zmenené: 14.
12.
2009 14:36)
Čo-to o rekurzii
Rekurzia je proces, v ktorom funkcia volá sama seba ako podprogram. Táto funkcia je naprogramovaná tak, aby sa niekoľkokrát mohla opakovať. Volá sama seba počas jej plnenia. Funkcie, ktoré obsahujú rekurziu, sa nazývajú rekurzívne funkcie.
Rekurzia je často vnímaná ako efektívny spôsob programovania, pretože si vyžaduje minimálne množstvo kódu pre vykonanie potrebných funkcií. Avšak rekurzia by mala byť začlenená opatrne, pretože môže viesť k nekonečnej slučke, ak by náhodou nebola splnená podmienka pre úspešné ukončenie.
Rekurzívnu funkciu je možné opakovať takým spôsobom, aby na konci každej iterácie mala nejaký výsledok. Pozrime sa na príklad takej rekurzívnej funkcie:
function Pocitaj(nejaké celé číslo N)
if(N<=0) return "Nezadali Ste celé kladné číslo";
if(N>9) return "Počítanie je dokončené";
else return Pocitaj(N+1);
Funkcia Pocitaj() používa rekurziu. Tento príklad je mierne bezvýznamný, ale na demonštráciu rekurzie bohato stačí. Napríklad, pre Pocitaj(1) funkcia vráti 2,3,4,5,6,7,8,9,10. Pre Pocitaj(7) vráti 8,9,10. Koniec koncov, toto je veľmi šikovná funkcia umožňujúca elgantne napočítať do 10.
Rekurzívne funkcie sú úplne bežné v oblasti programovania, pretože umožňujú programátorom písať efektívne programy využívajúce minimum množstva kódu. Nevýhodou je, že môžu spôsobiť nekonečnú slučku, prípadne iné neočakávané výsledky, ale to len v tom prípade, ak sú napísané zle. Napríklad vo vyššie uvedenom príklade sa funkcia ukončí v prípade, ak je vstupom číslo 0 alebo väčšie ako 9. Ak je v intervale od 1 do 8, tak je to samozrejme korektný vstup. Pri programovaní rekurzívnej funkcie sa musia správne ošetriť všetky vstupy, pretože nesprávne napísaný kód môže viesť dokonca až k havárií systému.
Rekurzia je často vnímaná ako efektívny spôsob programovania, pretože si vyžaduje minimálne množstvo kódu pre vykonanie potrebných funkcií. Avšak rekurzia by mala byť začlenená opatrne, pretože môže viesť k nekonečnej slučke, ak by náhodou nebola splnená podmienka pre úspešné ukončenie.
Rekurzívnu funkciu je možné opakovať takým spôsobom, aby na konci každej iterácie mala nejaký výsledok. Pozrime sa na príklad takej rekurzívnej funkcie:
function Pocitaj(nejaké celé číslo N)
if(N<=0) return "Nezadali Ste celé kladné číslo";
if(N>9) return "Počítanie je dokončené";
else return Pocitaj(N+1);
Funkcia Pocitaj() používa rekurziu. Tento príklad je mierne bezvýznamný, ale na demonštráciu rekurzie bohato stačí. Napríklad, pre Pocitaj(1) funkcia vráti 2,3,4,5,6,7,8,9,10. Pre Pocitaj(7) vráti 8,9,10. Koniec koncov, toto je veľmi šikovná funkcia umožňujúca elgantne napočítať do 10.
Rekurzívne funkcie sú úplne bežné v oblasti programovania, pretože umožňujú programátorom písať efektívne programy využívajúce minimum množstva kódu. Nevýhodou je, že môžu spôsobiť nekonečnú slučku, prípadne iné neočakávané výsledky, ale to len v tom prípade, ak sú napísané zle. Napríklad vo vyššie uvedenom príklade sa funkcia ukončí v prípade, ak je vstupom číslo 0 alebo väčšie ako 9. Ak je v intervale od 1 do 8, tak je to samozrejme korektný vstup. Pri programovaní rekurzívnej funkcie sa musia správne ošetriť všetky vstupy, pretože nesprávne napísaný kód môže viesť dokonca až k havárií systému.
Pošli článok do vybrali.sme.sk

