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

По определению слова это повторное применение рекурсивной процедуры. Рекурсивная функция вызывает себя снова и снова, пока не получит результат. В рекурсии вы берете большую проблему, разбивая ее, чтобы идентифицировать повторяющийся шаблон и базовый случай. Как только вы их устанавливаете, вы продолжаете повторять (складывать) с повторяющимися вызовами, пока не достигнете базового случая, а затем каскадируете полученное значение вниз по стеку. Простой:)

В камне пирамида (стопка) выше я сложил один камень над другим, так что не осталось места для другого камня. Мы собираемся использовать это, чтобы понять, как рекурсия работает в фоновом режиме. Это не волшебство! Просто повторение.

Я пишу этот столбец с единственной целью упростить то, что я узнал о том, как работает рекурсия, и представляю вам это с правилами и примером.

Шаги:
1 Должен быть случай if: случай 1: случай рекурсии 2: базовый случай
2. Определить базовый случай: простейший случай, когда рекурсия не требуется
3. Определить рекурсию и сохранить это в переменной. Выполнить необходимую операцию
Вернуть значение
4. Предположить, что рекурсия работает: спросите urself → что она делает? Как перейти от базового случая к окончательному результату

Пример: найдите факториал числа (n) или найдите n!

//Input: number Eg:5
//5! = 5*4*3*2*1
//Output:120
function factorial(n){
 if(n==0){
 return 1;
 }else{
 return factorial(n-1)*n//B;
 }
}
console.log(factorial(5))//A

* Предположим, // A и // B - названия соответствующих предложений.

Как это работает:
Когда вызывается factorial (5):
step1: найдите factorial (5) и затем вернитесь к оператору // A
step2: 5! == 0, следовательно, факториал (5–1) - ›найти факториал (4) и вернуться к // B
step3: 4! == 0, следовательно факториал (4–1) -› найти факториал (3) и вернитесь к // B
step4: 3! == 0, следовательно, factorial (3–1) - ›find factorial (2) и вернитесь к // B
step5: 2! == 0, следовательно, факториал (2–1) - ›найти факториал (1) и вернуться к // B
step6: 1! == 0, следовательно факториал (1–1) -› найти факториал (0) и вернуться к / / B
step7: 0 == 0, следовательно, factorial (0) = 1 возврат к // B со значением = 1
Стек теперь завершен, следовательно, значение начинает передаваться вниз по стеку
step8: теперь значение factorial (1) становится 1, возвращается 1 * n = 1 * 1 = 1
step9: теперь значение factorial (2) становится 1, return 1 * n = 1 * 2 = 2 < br /> step10: теперь значение factorial (3) становится 2 return 2 * n = 2 * 3 = 6
step11: теперь значение factorial (4) становится 6 return 6 * n = 6 * 4 = 24 < br /> step11: теперь значение facto rial (5) становится 24 return 24 * n = 24 * 5 = 120

По сути, после того, как рекурсивный вызов выполнен, «стек кода» продолжает накапливаться, пока не достигнет базового случая, точно так же, как стек камней на картинке выше. Базовый случай дает результат. Теперь это значение продолжает передаваться в стек, который мы построили, пока не дойдет до последнего случая, а затем он вернет результат.

Надеюсь, объяснение поможет вам лучше понять концепцию рекурсии. Пожалуйста, оставьте отзыв, если вам нравится и вам нравится метод Declutter.

Ссылки: посмотрите это видео Дэйва Файнберга, чтобы лучше понять концепцию: https://www.youtube.com/watch?v=ozmE8G6YKww