Koncová rekurze: Porovnání verzí

Smazaný obsah Přidaný obsah
m narovnání přesměrování
m překlep
Řádek 1:
'''Koncová rekurze''', respektive '''koncové volání''', je v [[Informatika|informatice]] taková situace, kdy posledním příkazem [[Funkce (programování)|funkce]] je [[rekurzivní funkce (programování)|rekurzivní]] zavolání sebe sama, respektive jiné funkce. Takové volání může šetřit místo na [[zásobník volání|zásobníku volání]], pokud to [[překladač]] umožňuje. Při předání řízení do podprogramu je totiž možnámožné nahradit obsah rámce současného podprogramu (z něhož už většina informací nebude potřeba) novým obsahem a předat řízení na začátek podprogramu obyčejným [[skok (informatika)|skok]]em, místo aby se musel starý rámec zachovávat a na vrchol zásobníku navíc ukládat rámec nový.
 
Z hlediska běžného [[procedurální programování|procedurálního programování]] je chytrá úprava koncových volání určitou [[Optimalizace (informatika)|optimalizací]] umožňující hlubší „zanoření“ při rekurzi. Naproti tomu ve [[Funkcionální programování|funkcionálním programování]], kde je místo [[cyklus (programování)|cyklů]] obvyklé používat [[rekurze|rekurzi]], je obvykle chytrý překlad koncových volání zaručen standardy daného jazyka (například ve [[Scheme]]). Hluboké rekurzivní zanoření je totiž předpokladem fungování programů a tedy není považováno za optimalizaci, ale za nezbytnou součást překladače.