Rekursja JavaScript (z przykładami)

W tym samouczku nauczysz się rekurencji w JavaScript na podstawie przykładów.

Rekurencja to proces wywoływania siebie. Funkcja, która wywołuje samą siebie, nazywana jest funkcją rekurencyjną.

Składnia funkcji rekurencyjnej to:

 function recurse() ( // function code recurse(); // function code ) recurse();

Tutaj recurse()funkcja jest funkcją rekurencyjną. Wzywa się wewnątrz funkcji.

Działanie rekurencji w JavaScript

Funkcja rekurencyjna musi mieć warunek, aby przestać wywoływać samą siebie. W przeciwnym razie funkcja jest wywoływana w nieskończoność.

Gdy warunek zostanie spełniony, funkcja przestaje wywoływać samą siebie. Nazywa się to warunkiem podstawowym.

Aby zapobiec nieskończonej rekurencji, możesz użyć instrukcji if… else (lub podobnego podejścia), w którym jedna gałąź wykonuje wywołanie rekurencyjne, a druga nie.

Więc ogólnie wygląda to tak.

 function recurse() ( if(condition) ( recurse(); ) else ( // stop calling recurse() ) ) recurse();

Prostym przykładem funkcji rekurencyjnej byłoby odliczanie wartości do 1.

Przykład 1: Drukowanie liczb

 // program to count down numbers to 1 function countDown(number) ( // display the number console.log(number); // decrease the number value const newNumber = number - 1; // base case if (newNumber> 0) ( countDown(newNumber); ) ) countDown(4);

Wynik

 4 3 2 1

W powyższym programie użytkownik przekazuje liczbę jako argument podczas wywoływania funkcji.

W każdej iteracji wartość liczbowa jest zmniejszana o 1 i countDown()wywoływana jest funkcja, aż liczba będzie dodatnia. Oto newNumber> 0podstawowy warunek.

To rekurencyjne wywołanie można wyjaśnić w następujących krokach:

 countDown (4) wyświetla 4 i wywołuje countDown (3) countDown (3) wyświetla 3 i wywołuje countDown (2) countDown (2) wyświetla 2 i wywołuje countDown (1) countDown (1) wyświetla 1 i wywołuje countDown (0)

Gdy liczba osiągnie 0 , warunek podstawowy jest spełniony i funkcja nie jest już wywoływana.

Przykład 2: Znajdź silnię

 // program to find the factorial of a number function factorial(x) ( // if number is 0 if (x === 0) ( return 1; ) // if number is positive else ( return x * factorial(x - 1); ) ) const num = 3; // calling factorial() if num is non-negative if (num> 0) ( let result = factorial(num); console.log(`The factorial of $(num) is $(result)`); )

Wynik

 Silnia 3 to 6

Gdy wywołujesz funkcję factorial()z dodatnią liczbą całkowitą, będzie ona rekurencyjnie wywoływać samą siebie, zmniejszając liczbę.

Ten proces trwa, aż liczba stanie się 1 . Następnie, gdy liczba osiągnie 0 , zwracane jest 1 .

Praca z rekurencją JavaScript w silni

To rekurencyjne wywołanie można wyjaśnić w następujących krokach:

 silnia (3) zwraca 3 * silnia (2) silnia (2) zwraca 3 * 2 * silnia (1) silnia (1) zwraca 3 * 2 * 1 * silnia (0) silnia (0) zwraca 3 * 2 * 1 * 1

Interesujące artykuły...