# JavaScript Recursive functions

Among the functions, recursive functions can be distinguished separately. Their essence is that the function calls itself.

For example, consider a function that determines the factorial of a number:

```function getFactorial(n){
if (n === 1){
return 1;
}
else{

return n * getFactorial(n - 1);
}
}
var result = getFactorial(4);
console log(result); // 24
```

The function getFactorial() returns the value 1 if the parameter n is equal to 1, or returns the result of the getFactorial function again, then the value n-1 is passed to it. For example, when passing the number 4, we have the following chain of calls:

```
var result = 4 * getFactorial(3);
var result = 4 * 3 * getFactorial(2);
var result = 4 * 3 * 2 * getFactorial(1);
var result = 4 * 3 * 2 * 1; // 24
```

Consider another example – the definition of Fibonacci numbers:

```function getFibonachi(n)
{
if (n === 0){
return 0;
}
if (n === 1){
return 1;
}
else{
return getFibonachi(n - 1) + getFibonachi(n - 2);
}
}
var result = getFibonachi(8); //21
console log(result); // 21
```