Koncová rekurze: Porovnání verzí
Smazaný obsah Přidaný obsah
m r2.7.2) (Robot: Upravuji en:Tail call |
Formátování, typos |
||
Řádek 1:
'''Koncová rekurze''', respektive '''koncové volání''', je v [[Informatika (počítačová věda)|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á 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í|
== Příklady syntaxe ==
Koncové volání může být
<source lang="javascript">
function foo(data) {
Řádek 11:
}
</source>
Funkce ovšem může obsahovat i více koncových volání než jedno – podstatné je, že za koncovým voláním následuje návrat z podprogramu. Například v zdrojovém kódu <source lang="javascript">
function bar(data) {
|