Co je to rekurze ocasu?
rekurze ocasu je typ volání metody programování, kde se metoda volá sama, a poté okamžitě vrátí hodnotu druhého hovoru. Jinými slovy, dochází k rekurzi ocasu, když je konečné příkaz uvnitř metody další volání stejné metody. Parametry ve druhém volání metody se obecně liší od parametrů prvního, ale to není nutné. Aby tato rekurze mohla fungovat, musí metoda, která se vyvolává v sobě, vrátit konkrétní hodnotu, jako je číslo, řetězec nebo nějaký jiný objekt. Metody Void, které nevrátí hodnotu, nefungují dobře pro rekurzi.
Požadavek, aby rekurzivní hovor musí být posledním prohlášením ve své metodě volání, nemusí nutně znamenat, že rekurzivní volání je poslední řádek v metodě. Správné volání ocasu rekurze lze také nalézt uvnitř kontrolní struktury, což znamená, že ve zdrojovém kódu může řídicí struktura metoda ukončit spíše než volání. Důležitým rozdílem je, že COStruktura NTROL není programovací příkaz, ale vestavěná část počítačového jazyka.
rekurze ocasu existuje v mnoha počítačových jazycích, včetně Java a C ++. Tato rekurzivní volání lze často přepsat pomocí jiných prostředků, například pro smyčky, zatímco smyčky nebo příkazy Goto. Užitečnost rekurze se nachází při vytváření mnoha sekvenčních hovorů stejnou metodu. Rekurze je často nejčistší a nejjednodušší způsob, jak splnit opakované úkoly.
Běžným příkladem rekurze ocasu je metoda, která vypočítá faktor čísla. Tento proces je ideální, protože počínaje libovolným číslem je každé číslo před tím, než se vynásobí dohromady. Takže, abych našel faktor 5, správným procesem, který by to udělal, by bylo vynásobit 5*4*3*2*1. Rekurze přichází kvůli tomu, jak je faktoriální metoda strukturována: Pokud je faktor 1, vrátí se 1, jinak vraťte faktor čísla GIven k metodě mínus jedna. Tato metoda je také užitečná, protože může být ekvivalentně psána pomocí kteréhokoli typu rekurze ocasu, s ovládacím příkazem nebo bez kontroly kolem konečného volání metody.
rekurze ocasu je jen jedním z příkladů více typů rekurze. Koncept ve všech typech rekurze je v podstatě stejný, že se v určitém způsobem volá metoda. Z těchto typů je rozlišení rekurze ocasu to, že hodnota rekurzivního hovoru je okamžitě vrácena a po tomto hovoru se nic jiného nestane.