# Blog

## Recursion from Four Semesters of Computer Science in 5 Hours by Brian HoltPosted on August 5, 2020 in Algorithms, JavaScript by Matt Jennings

### Recursive Function Definition

A recursive function is a function that calls itself until it doesn’t. And this technique is called recursion.

Stack overflow is when a function calls itself two many times for the memory available in a computer, or a function calls itself infinite times. Below is an example of stack overflow:

```// In Google Chrome the error below is produced:
// Uncaught RangeError: Maximum call stack size exceeded
function foo() {
return foo();
}
foo();```

Recursion example with a base case to prevent stack overflow:

```function basicRecursion(max, current) {
// Base case which prevents stack overflow
// and if current is greater then
// function stops
if (current > max) return;
console.log(current);
basicRecursion(max, current + 1);
}

// Console logs off 1, 2, 3, 4, 5
basicRecursion(5,1);```

Factor recursion example:

```function factorial(n) {
if(n < 2) return 1;
return n * factorial(n - 1);
}

console.log(factorial(5));

/*
5 * factorial(5 - 1);
4 * factorial(4 - 1);
3 * factor(3 - 1);
2 * 1;
5 * 4 * 3 * 2 * 1;
*/```