Рекурсия 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

Интересные статьи...