Рекурсия - это процесс, при котором функция вызывает саму себя. Рекурсия может быть использована для решения некоторых задач, которые могут быть разбиты на более мелкие подзадачи.
Пример рекурсивной функции на JavaScript, которая вычисляет факториал числа:
function factorial(n) {
if (n === 0) {
return 1
} else {
return n * factorial(n - 1)
}
}
console.log(factorial(5)) // 120
В этой функции, если аргумент n
равен 0, тогда функция возвращает 1. В противном случае, функция вызывает саму себя с аргументом n - 1
и умножает результат на n
. Функция продолжает вызывать саму себя до тех пор, пока не достигнет терминального случая n === 0
.
Терминальный случай - это условие, при котором рекурсивная функция перестает вызывать саму себя и возвращает результат. Если терминальный случай отсутствует, то рекурсивная функция будет вызываться бесконечно, что приведет к ошибке и переполнению стека.
Например, следующая функция вызывает саму себя бесконечное количество раз и не имеет терминального случая, что приведет к ошибке:
function infiniteRecursion() {
console.log("Hello!")
infiniteRecursion()
}
infiniteRecursion() // Приведет к ошибке RangeError: Maximum call stack size exceeded
Поэтому, при написании рекурсивных функций необходимо убедиться, что они имеют терминальный случай, который приведет к выходу из рекурсии.