Концепции JavaScript

Сила рекурсии в разработке #JavaScript

Функция, которая вызывает сама себя

· Рекурсивная функция в JavaScript — это функция, которая вызывает сама себя.

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

function decrease(num) {
    if (num > 0) {             // Exit condition.
        console.log(num);
        decrease(num - 1);    // Calling the same function.
    }
}
decrease(4);

Output:-
4
3
2
1

· Если мы не указали точку выхода. Функция будет считаться бесконечной рекурсией, и вы увидите RangeError: превышен максимальный размер стека вызовов. Из-за ограниченного размера стека вызовов. Подробнее о стеке вызовов нажмите здесь…

· За кулисами рекурсии каждый вызов функции добавляется в стек вызовов.

· Некоторые популярные применения рекурсии — факториал числа, ряды Фибоначчи и т. д. Но вы можете использовать рекурсию, учитывая ваши потребности.

· Рекурсивные операции затратны. Занимает много времени и места.

· В основном в программировании избегают рекурсии. Но вы должны знать это для интервью. Я редко видел рекурсию, используемую в веб-приложении. Вы должны использовать его только в том случае, если нет другого способа решить вашу проблему.

Например, 1 факториал числа

function factorial(num) {
    if (num <= 1) return 1      // exit condition.
    else {
        return num * factorial(num - 1);   //recursion
    }
}
console.log(factorial(5));

Output:- 120

Объяснение:-
Для num=5 приведенный выше код будет помещен в блок else, поскольку он не меньше 1;
Он продолжится как
5*факториал(4)
5*факториал(4) * 4*факториал(3)
5*факториал(4) * 4*факториал(3 ) * 3* факториал(2)
5*факториал(4) * 4*факториал(3) * 3* факториал(2) *2* факториал(1)

Поскольку num равно 1, если блок будет выполнен, а factorial(1) вернет 1

5*факториал(4) * 4*факториал(3) * 3* факториал(2) *2*1
5*факториал(4) * 4*факториал(3) *3*2
5 *factorial(4) *4*6
5*24 =120 будет напечатано.

Например, 2. Выведите n-е число Фибоначчи

function fibonacci(num) {
    if (num < 2) return num;
    else return fibonacci(num - 1) + fibonacci(num - 2);
}
console.log(fibonacci(7));

Output :- 13
//As 1 1 2 3 5 8 13         13 is 7th fibonacci number.