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.

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> 0
podstawowy 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 .

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