Articles

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:

function recurse() { // ... recurse(); // ...}
Code language: JavaScript (javascript)

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:

function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Code language: JavaScript (javascript)

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:

function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Code language: JavaScript (javascript)

To countDown(3) pokazuje tylko numer 3.

aby policzyć liczbę od 3 do 1, możesz:

  1. pokazać liczbę 3.
  2. i wywołaćcountDown(2), który pokazuje liczbę 2.
  3. 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:

Uncaught RangeError: Maximum call stack size exceeded.
Code language: JavaScript (javascript)

… 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:

let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Code language: JavaScript (javascript)

błąd:

Uncaught TypeError: countDown is not a function
Code language: JavaScript (javascript)

jak działa skrypt:

  • najpierw przypisz nazwę funkcjicountDown do zmiennejnewYearCountDown.
  • Po Drugie, UstawcountDown odniesienie do funkcjinull.
  • Po Trzecie, wywołanie funkcjinewYearCountDown.

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