Рекурсия в JavaScript


Что такое рекурсия?

Рекурсивная функция — это функция, которая вызывает сама себя до тех пор, пока не вызовет. Эта техника называется рекурсией.


Синтаксис

const recurse = () => {
    recurse();
}

recurse();
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта рекурсивная функция будет вызывать себя вечно, поэтому ей нужно немного больше штрихов

const recurse = () => {
  if (condition) {
    recurse();
  }
  // stop calling recurse()
};

recurse();
Ввести полноэкранный режим Выйти из полноэкранного режима

Эта функция будет продолжать вызывать себя до тех пор, пока не выполнит условие, в противном случае ее выполнение прекратится.


Примеры

1- Простой пример

const countDown = (start, end) => {
  console.log(start);
  if (start > end) {
    countDown(start - 1, end);
  }
};

countDown(19, 7); // 19 18 17 16
Вход в полноэкранный режим Выход из полноэкранного режима

За кулисами

  • countDown(19, 7) печатает 19 и вызывает countDown(18, 7)
  • countDown(18, 7) печатает 18 и вызывает countDown(17, 7)
  • countDown (17, 7) печатает 17 и вызывает countDown(16, 7)
  • countDown (16, 7) печатает 16 и останавливает выполнение.

2- Факториал

  • 0! = 1
  • 1! = 1
  • 2! = 2 * 1
  • 3! = 3 * 2 * 1
  • 4! = 4 * 3 * 2 * 1
  • 5! = 5 * 4 * 3 * 2 * 1
const factorial = (num) => (num < 0 ? -1 : num === 0 ? 1 : num * factorial(num - 1));

console.log(factorial(5)); // 120
Войдите в полноэкранный режим Выход из полноэкранного режима

За кулисами

  • факториал(5) = 5 * факториал(4)
  • факториал(4) = 4 * факториал(3)
  • факториал(3) = 3 * факториал(2)
  • факториал(2) = 2 * факториал(1)
  • факториал(1) = 1 * факториал(0)
  • факториал(0) = 1

3- Фибоначчи

Последовательность Фибоначчи записывается как:
0, 1, 1, 2, 3, 5, 8, 13, 21, …

Последовательность Фибоначчи — это целочисленная последовательность, в которой первые два члена равны 0 и 1. После этого следующий член определяется как сумма двух предыдущих. Следовательно, n-й член равен сумме (n-1)-го члена и (n-2)-го члена.

Вот код, который возвращает значение числа Фибоначчи по заданному индексу с помощью рекурсии

const fibonacci = (n) => (n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2));

console.log(fibonacci(5)); // 5
Войдите в полноэкранный режим Выход из полноэкранного режима

За кулисами

  • fibonacci(5) = fibonacci(4) + fibonacci(3)
  • фибоначчи(4) = фибоначчи(3) + фибоначчи(2)
  • фибоначчи(3) = фибоначчи(2) + фибоначчи(1)
  • фибоначчи(2) = фибоначчи(1) + фибоначчи(0)
  • фибоначчи(1) = 1
  • фибоначчи(0) = 0

Оцените статью
devanswers.ru
Добавить комментарий