Концепции 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.