Среди функций отдельно можно выделить рекурсивные функции. Их суть состоит в том, что функция вызывает саму себя.
Например, рассмотрим функцию, определяющую факториал числа:
function factorial(n){
if (n === 1){
return 1;
}
else{
return n * factorial(n - 1);
}
}
const result = factorial(4);
console.log(result); // 24
Функция factorial() возвращает значение 1, если параметр n равен 1, либо возвращает результат опять же функции factorial, то в
нее передается значение n-1. Например, при передаче числа 4, у нас образуется следующая цепочка вызовов:
result = 4 * factorial(3); result = 4 * 3 * factorial(2); result = 4 * 3 * 2 * factorial(1); result = 4 * 3 * 2 * 1; // 24
Рассмотрим другой пример - определение чисел Фибоначчи:
function fibonachi(n)
{
if (n === 0 || n === 1){
return n;
}
else{
return fibonachi(n - 1) + fibonachi(n - 2);
}
}
const result = fibonachi(8); //21
console.log(result); // 21