Rekurze (programování): Porovnání verzí

Smazaný obsah Přidaný obsah
Bez shrnutí editace
 
+ulozeni navratove adresy na zasobnik; *neni pamet => havaruje program, ne system; preklepy
Řádek 28:
end function
 
V případě chybného použití rekurzivního volání může dojít k nekonečné smyčce. V případě, že funkce volá sama sebe se stále stejnými parametry, vzniká při každém dalším volání nová sada [[lokální proměnná|lokálních proměnných]] a funkce se zanořuje stále hlouběji a každé další volání požaduje stále další prostor v paměti pro vytvoření další sady proměnných a uložení návratové adresy. V okamžiku, kdy se vyčerpá veškerá volná paměť počítače, dochází obyčejnědojde k havárii systémuprogramu.
 
==Rekurzivní volání==
Řádek 55:
Každý program, který používá rekurzivní volání funkcí, by měl postupovat podle následujících základních kroků
#inicializační algoritmus - rekursivní funkce většinou potřebuje nějakou inicializační hodnotu, se kterou zahájí výpočet. To většinou zajišťuje jiná funkce, která není rekurzivní a která danou rekurzivní funkci volá a předává hodnotu, se kterou rekurzivní výpočet začíná
#kontrola, zda vstupní parametr odpovídá stanoveným podmínkám. Pokud hodnota parametru odpovídá, rekurzivní funkce provede výpočet va rátívrátí hodnotu
#rekurzivní funkce redefinuje řešení problému tak, že jej nějakým způsobem zmenší, zjednoduší nebo rozloží na dílšídílčí podproblémy
#volání funkcí, které řeší daný podproblém - tady nastává přímé nebo nepřímé volání sebe sama
#sestavení výsledku