funkcja rekurencyjna JavaScript
Podsumowanie :w tym samouczku dowiesz się, jak wykorzystać technikę rekurencji do opracowania funkcji rekurencyjnej JavaScript, która jest funkcją wywołującą samą siebie.
Wprowadzenie do funkcji rekurencyjnych JavaScript
funkcja rekurencyjna jest funkcją, która wywołuje się, dopóki nie zostanie wywołana. i ta technika nazywa się rekurencją.
Załóżmy, że masz funkcję o nazwie recurse()
recurse()
jest funkcją rekurencyjną, jeśli nazywa się wewnątrz swojego ciała, jak to:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
funkcja rekurencyjna zawsze ma warunek, aby przestać się wywoływać, w przeciwnym razie będzie wywoływać się w nieskończoność. Funkcja rekurencyjna zazwyczaj wygląda następująco:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
ogólnie, funkcje rekurencyjne są używane do podziału dużego problemu na mniejsze. Można zauważyć, że są one szeroko stosowane w strukturach danych, takich jak drzewa binarne i wykresy oraz algorytmy, takie jak wyszukiwanie binarne i quicksort.
przykłady funkcji rekurencyjnych JavaScript
weźmy kilka przykładów użycia funkcji rekurencyjnych.
1) prosty przykład funkcji rekurencyjnej JavaScript
Załóżmy, że musisz rozwinąć funkcję, która odlicza się od określonej liczby do 1. Na przykład, aby odliczyć od 10 do 1:
321
poniżej pokazuje countDown()
funkcja:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
To countDown(3)
pokazuje tylko numer 3.
aby policzyć liczbę od 3 do 1, możesz:
- pokazać liczbę 3.
- i wywołać
countDown(2)
, który pokazuje liczbę 2. - i wywołać
countDown(1)
, który pokazuje liczbę 1.
następujące zmianycountDown()
na funkcję rekurencyjną:
tocountDown(3)
będzie działać, dopóki rozmiar stosu wywołań nie zostanie przekroczony, jak to:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
… ponieważ nie ma warunku przestać się nazywać.
odliczanie zatrzyma się, gdy następna liczba będzie równa zero, dlatego dodajemy warunek if w następujący sposób:
wyjście:
321
countDown()
wydaje się działać zgodnie z oczekiwaniami.
jednak, jak wspomniano w tutorialu typu funkcji, nazwa funkcji jest odniesieniem do rzeczywistego obiektu funkcji.
jeśli gdzieś w kodzie nazwa funkcji jest ustawiona na null, funkcja rekurencyjna przestanie działać.
na przykład następujący kod spowoduje błąd:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
błąd:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
jak działa skrypt:
- najpierw przypisz nazwę funkcji
countDown
do zmiennejnewYearCountDown
. - Po Drugie, Ustaw
countDown
odniesienie do funkcjinull
. - Po Trzecie, wywołanie funkcji
newYearCountDown
.
Kod powoduje błąd, ponieważ treść funkcjicountDown()
odwołuje się do nazwy funkcjicountDown
, która została ustawiona nanull
w momencie wywołania funkcji.
aby to naprawić, możesz użyć nazwanego wyrażenia funkcyjnego w następujący sposób:
2) Oblicz sumę cyfr liczby przykład
dana liczba np. 324, Oblicz sumę cyfr 3 + 2 + 4 = 9.
aby zastosować technikę rekurencyjną, możesz użyć następujących kroków:
f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)
więc
f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3
poniżej przedstawionosumOfDigits()
funkcja rekurencyjna:
Jak to działa:
podsumowanie
- funkcja rekurencyjna jest funkcją, która wywołuje się dopóki nie zostanie wywołana
- funkcja rekurencyjna zawsze ma warunek, który zatrzymuje funkcję przed wywołaniem się.
- czy ten tutorial był pomocny ?
- YesNo