Рекурсія JavaScript (з прикладами)

У цьому уроці ви дізнаєтесь про рекурсію в JavaScript за допомогою прикладів.

Рекурсія - це процес самовиклику. Функція, яка викликає себе, називається рекурсивною.

Синтаксис рекурсивної функції:

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

Тут recurse()функція є рекурсивною функцією. Він викликає себе всередині функції.

Робота рекурсії в JavaScript

Рекурсивна функція повинна мати умову, щоб перестати викликати себе. В іншому випадку функція викликається нескінченно.

Після виконання умови функція перестає викликати себе. Це називається базовою умовою.

Щоб запобігти нескінченній рекурсії, ви можете використовувати оператор 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 .

Робота рекурсії JavaScript у Factorial

Цей рекурсивний виклик можна пояснити наступними кроками:

 факторіал (3) повертає 3 * факторіал (2) фактор (2) повертає 3 * 2 * факторіал (1) факторіал (1) повертає 3 * 2 * 1 * факторіал (0) факторіал (0) повертає 3 * 2 * 1 * 1

Цікаві статті...