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