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