В этой статье мы поймем основные детали, связанные с частью понимания, а также с частью реализации рекурсии в JavaScript.
Давайте сначала разберемся, что такое рекурсия.
Рекурсия
- Мы могли бы формально определить рекурсию простыми словами, то есть функцию, вызывающую саму себя снова и снова, пока она больше не останется с ней.
- Мы можем думать о рекурсии (неформально) как о беге по гоночной трассе снова и снова, но с каждым разом круги становятся все меньше и меньше.
- Как мы видели, рекурсия — это функция, которая продолжает вызывать себя снова и снова и в конце концов останавливается сама по себе, но мы также можем осознать тот факт, что функция не останавливается сама по себе.
- Поэтому, чтобы заставить функцию остановиться в какой-то момент, мы предоставляем что-то, вызывающее Base Case, что позволяет любой функции понять, что «Да, пора завершаться!».
- После задания базового условия мы реализуем часть рекурсии, в которой мы снова вызываем функцию в соответствии с требуемым результатом.
- Некоторые распространенные примеры рекурсии включают «ряд Фибоначчи», «самую длинную общую подпоследовательность», «проверку палиндрома» и так далее.
- Мы также можем представить рекурсию в виде цикла, в котором для каждого переданного пользователем параметра функция вызывается снова и снова и, следовательно, производит свой вывод в соответствии с необходимостью,
Теперь, когда мы поняли все основные вещи, связанные с рекурсией и ее реализацией, давайте посмотрим, как мы могли бы реализовать ее, визуализируя то же самое на следующих примерах:
Пример 1: В этом примере мы будем реализовывать счетчик уменьшения числа, который уменьшает значение на единицу и печатает все числа в порядке убывания одно за другим.
Javascript
<script>
let decrementCounter = (number) => {
// Base case condition....
if
(number === 0)
return
;
console.log(number);
decrementCounter(number - 1);
}
decrementCounter(5);
</script>
Вывод:
5 4 3 2 1
Пример 2. В этом примере мы будем разрабатывать код, который поможет нам проверить, является ли переданное целое число четным или нечетным. При непрерывном вычитании числа из 2 результатом будет либо 0, либо 1. Итак, если это 0, то наше число четное, иначе оно нечетное.
Javascript
<script>
let checkNumber = (number) => {
// Two base case conditions.....
if
(number === 0)
return
(number +
" is even"
);
if
(number === 1)
return
(number +
" is odd"
);
return
checkNumber(number - 2);
}
console.log(checkNumber(5));
console.log(checkNumber(10));
console.log(checkNumber(13333));
</script>
Вывод:
1 is odd 0 is even 1 is odd