Temat
- #Wywołania ogonowe
- #Funkcje rekurencyjne
- #TCO
Utworzono: 2024-10-12
Utworzono: 2024-10-12 18:47
Ucząc się testów kodowania i dodając efekty animacji do tekstu
podczas pisania funkcji rekurencyjnych, z pomocą AI dowiedziałem się o koncepcji TCO.
Optymalizacja rekurencji ogonowej zapobiega przepełnieniu stosu spowodowanemu wywołaniami rekurencyjnymi i sprawia, że użycie pamięci jest bardziej wydajne.
W JavaScript jest to określone w specyfikacji jako obsługiwane w trybie ścisłym ES6, ale wydaje się, że wciąż niewiele przeglądarek to obsługuje.
Rekurencja zwykła
Rekurencja ogonowa
Metoda kończenia ostatniej operacji funkcji wywołaniem funkcji rekurencyjnej nazywana jest rekurencją ogonową.
Nie potrzeba już ramki stosu funkcji, co optymalizuje zużycie pamięci!
W JavaScript sposób implementacji rekurencji ogonowej polega na użyciu techniki trampoliny.
W tej metodzie funkcja factorialTCO zamiast zwracać wynik bezpośrednio, zwraca funkcję.
Funkcja trampoline wykonuje te zwrócone funkcje, aż do uzyskania ostatecznego wyniku.
Jest to ważna technika w programowaniu funkcyjnym, interesujące jest to, że rozwiązuje wadę tradycyjnych funkcji rekurencyjnych (przepełnienie stosu). Szczerze mówiąc, patrząc tylko na kod, nie rozumiem tego intuicyjnie, więc muszę jeszcze raz to sprawdzić, gdy będę miał z tym problem.
Komentarze0