I’m working on some problems to help me better understand recursion. First, I will do a function to calculate n factorial (n!). This is how Wikipedia explains factorial:

In mathematics, the **factorial** of a non-negative integer *n*, denoted by *n*!, is the product of all positive integers less than or equal to *n*. For example,

https://en.wikipedia.org/wiki/Factorial

The example below is a good case for using a recursive solution:

1 2 3 4 5 6 7 |
function factorial(n) { if (n === 1) { return 1; } else { return n * factorial(n-1); } } |

The trouble I had with recursion was in understanding where it is stored the product of the multiplication on line 5. It turned out that it was being stored in a stack. As I now understand it, I can think of the stack as an array. Below I’ve added a stack array to illustrate this.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
const stack=[]; function countDown(int) { stack.push(int); // Base case if (int === 1) { return 1; } else { // recursive case return int * countDown(int-1); } } const output = countDown(6); console.log('factorial is ', output); console.log(stack); |

Next I did a recursive function to calculate multiples of a number. The function takes in base and i (the number of multiples to calculate). The results are stored in the multiples array.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var multiples = []; function multiplesOf(base, i) { // Base case if (i === 0) { // Write the array multiples to the console return multiples; } // Recursive case else { multiples[i - 1] = base * i; // Add a recursive function call return multiplesOf(base,i-1); } } const output = multiplesOf(5, 3); console.log(output); |