На этой неделе я застрял в бесконечном цикле после неудачной попытки построить рекурсивную функцию. Согласно MDN (2021), рекурсивная функция — это функция, которая вызывает сама себя до тех пор, пока не будет выполнено условие прекращения вызова самой себя. Причина, по которой я застрял в бесконечном цикле, заключалась в том, что я забыл установить это условие, чтобы остановить цикл. Это условие называется базовым случаем. Я воспользовался этой простой ошибкой, чтобы дать мне прекрасную возможность вернуться и пересмотреть тему.

Рекурсивные функции — отличный способ разбить большую проблему на маленькие задачи. Наиболее популярным применением рекурсивной функции является факториал. Чтобы вычислить факториал числа, нужно умножить неотрицательное число на каждое последующее число минус один. Например:

7! = 7 x 6 x 5 x 4 x 3 x 2 x 1 = 5040

5! = 5 x 4 x 3 x 2 x 1 = 120

3! = 3 x 2 x 1 = 6

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

Чтобы создать рекурсивную функцию, первым шагом является установка условного оператора, который сообщает функции, когда прекратить вызывать себя. Затем создайте аргумент, который будет выполняться и вызываться хотя бы один раз. В этом примере факториал numможно найти, найдя факториал числа на единицу меньше num..

function factorial(num) {
   //If the number is equal to 0 or 1 , its factorial is 1.
  if (num == 0 || n == 1){ 
    return 1
   //Else call the recursive function again
  } else {
    return (num * factorial(num - 1 ))
  }
}

Ключевые выводы

  • Рекурсивная функция — это функция, которая вызывает себя до тех пор, пока не будет выполнено условие
  • Рекурсивная функция должна иметь условие, чтобы перестать вызывать себя (базовый случай)
  • Рекурсивные функции можно использовать в качестве альтернативы циклу, если вы знаете условие, при котором функция должна прекратить выполнение.

Ссылки

Функции — JavaScript | МДН. (2021, 20 июля). MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#recursion