У цьому уроці ви дізнаєтесь про рекурсію в JavaScript за допомогою прикладів.
Рекурсія - це процес самовиклику. Функція, яка викликає себе, називається рекурсивною.
Синтаксис рекурсивної функції:
function recurse() ( // function code recurse(); // function code ) recurse();
Тут recurse()
функція є рекурсивною функцією. Він викликає себе всередині функції.

Рекурсивна функція повинна мати умову, щоб перестати викликати себе. В іншому випадку функція викликається нескінченно.
Після виконання умови функція перестає викликати себе. Це називається базовою умовою.
Щоб запобігти нескінченній рекурсії, ви можете використовувати оператор if … else (або подібний підхід), коли одна гілка робить рекурсивний виклик, а інша - ні.
Отже, це взагалі виглядає так.
function recurse() ( if(condition) ( recurse(); ) else ( // stop calling recurse() ) ) recurse();
Простим прикладом рекурсивної функції буде зворотний відлік значення до 1.
Приклад 1: Друк чисел
// 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);
Вихідні дані
4 3 2 1
У наведеній вище програмі користувач передає число як аргумент під час виклику функції.
У кожній ітерації значення числа зменшується на 1 і функція countDown()
викликається, поки число не буде позитивним. Ось newNumber> 0
базовий стан.
Цей рекурсивний виклик можна пояснити наступними кроками:
countDown (4) друкує 4 і дзвінки countDown (3) countDown (3) друкує 3 і дзвінки countDown (2) countDown (2) друкує 2 і дзвінки countDown (1) countDown (1) друкує 1 і дзвінки countDown (0)
Коли число досягає 0 , основна умова виконується, і функція більше не викликається.
Приклад 2: Знайти факторіал
// 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)`); )
Вихідні дані
Факторіал 3 дорівнює 6
Коли ви викликаєте функцію factorial()
з додатним цілим числом, вона буде рекурсивно викликати себе, зменшуючи число.
Цей процес триває, поки число не стане 1 . Потім, коли число досягає 0 , повертається 1 .

Цей рекурсивний виклик можна пояснити наступними кроками:
факторіал (3) повертає 3 * факторіал (2) фактор (2) повертає 3 * 2 * факторіал (1) факторіал (1) повертає 3 * 2 * 1 * факторіал (0) факторіал (0) повертає 3 * 2 * 1 * 1