Javascript Recursion

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:

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.

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.

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);

Leave a Reply

Your email address will not be published. Required fields are marked *