Co to jest rekursja ogona?
Rekurencja ogona jest rodzajem wywołania metody programowania, w którym metoda wywołuje się sama, a następnie natychmiast zwraca wartość drugiego wywołania. Innymi słowy, rekurencja ogona występuje, gdy ostateczna instrukcja w metodzie jest kolejnym wywołaniem tej samej metody. Parametry w drugim wywołaniu metody są zasadniczo różne od parametrów pierwszego, ale nie jest to wymagane. Aby rekursja zadziałała, metoda wywoływana w sobie musi zwracać konkretną wartość, taką jak liczba, ciąg znaków lub jakiś inny obiekt. Metody Void, które nie zwracają wartości, nie działają dobrze w przypadku rekurencji.
Wymóg, że wywołanie rekurencyjne musi być ostatnim wyrażeniem w metodzie wywoływania, niekoniecznie oznacza, że wywołanie rekurencyjne jest ostatnim wierszem w metodzie. Właściwe wywołanie rekurencji ogona można również znaleźć wewnątrz struktury kontrolnej, co oznacza, że w kodzie źródłowym struktura kontrolna może zakończyć metodę, a nie wywołanie. Ważnym rozróżnieniem w tym przypadku jest to, że struktura sterowania nie jest instrukcją programowania, ale wbudowaną częścią języka komputerowego.
Rekurencja ogona istnieje w wielu językach komputerowych, w tym Java i C ++. Często te rekurencyjne wywołania mogą być przepisywane przy użyciu innych środków, takich jak pętle, pętle while lub instrukcje goto. Użyteczność rekurencji znajduje się przy tworzeniu wielu kolejnych wywołań tej samej metody. Rekurencja jest często najczystszym i najłatwiejszym sposobem na wykonywanie powtarzalnych zadań.
Typowym przykładem rekurencji ogona jest metoda, która oblicza silnię liczby. Ten proces jest idealny, ponieważ zaczynając od dowolnej liczby, każda liczba przed jej pomnożeniem razem. Tak więc, aby znaleźć silnię 5, właściwym procesem jest pomnożenie 5 * 4 * 3 * 2 * 1. Rekurencja pojawia się z powodu struktury metody silni: jeśli silnia wynosi 1, zwróć 1, w przeciwnym razie zwróć silnię liczby podanej do metody minus jeden. Ta metoda jest również przydatna, ponieważ można ją zapisać w równoważny sposób za pomocą dowolnego typu rekurencji ogona, z instrukcją sterującą lub bez niej wokół końcowego wywołania metody.
Rekurencja ogona jest tylko jednym przykładem wielu typów rekurencji. Koncepcja wszystkich typów rekurencji jest zasadniczo taka sama, że w pewien sposób metoda nazywa się sama. Spośród tych typów rozróżnienie rekurencji ogona polega na tym, że wartość wywołania rekurencyjnego jest natychmiast zwracana, a po wywołaniu nic innego nie dzieje się w metodzie wywoływania.