JavaScript Recursion with examples

Today’s topic is recursion, the question that arises here is,

What do you mean by recursion?

Recursion means recurring (occurring again and again or repetition), function calling itself.

Basically, the concept of recursion is based on PMI (Principle of Mathematical Induction) which we studied in high school. As we know in PMI we have a given equation and we have to prove for smaller value
i.e n=1. And we are assuming the Eqn. is correct for ‘ k ‘ and need to check for ‘ k+1 ‘.
In recursion, the concept is the same: base condition, function call, and small calculation.

Syntax:

function recur() {
    // base condition
    if(){
      //condition
    }
    // function calling itself
    recur();
    // ...
}

you can do a small calculation part before(during stack push-Tail recursion) or after repetitively calling the function(during stack pop). But the base condition should be above the function call. Suppose if we forget to put the base condition, it will form an infinite loop or program crash.

Q.1 Print numbers from n to 1.

function print(n){
  // base condition
  if(n==0){
    return ;
  }
  // small work
  console.log(n);
  //function call
  print(n-1);
}
print(5);

Output:

5
4
3
2
1

Q.2 Print numbers from 1 to n.

the first way to do this…

function print(n){
  // base condition
  if(n==0){
    return ;
  }
  //function call
  print(n-1);
  // small work
  console.log(n);
}
print(5);

Output:

1
2
3
4
5

the second way to do…

function print(n,i){
  // base condition
  if(n==0){
    return ;
  }
  // small work
  console.log(i);
  //function call
  print(n-1,i+1);
}
print(5,1);

Output:

1
2
3
4
5

Time complexity: O(n)

Space complexity: O(n)[internally stack is working to store functions]

Multiple recursion

Q. Print Fibonacci series using recursion in JavaScript

function fibo(num){
  if(num==0 || num==1){
   return num; 
  }
  return fibo(num-1)+fibo(num-2);
}
console.log(fibo(5));

Output:

5

Print Fibonacci series using recursion in JavaScript

Q. You have given a matrix n*m. find all possible paths to reach the destination in JavaScript. You have given the value of n and m.

Here, ‘h’ is the horizontal move and ‘v’ is the vertical move.

Print Fibonacci series using recursion in JavaScript

function printMazePaths(sr , sc , dr , dc , psf) {
          if(sr==dr && sc==dc){
             console.log(psf);
              return ;
          }
          if(sc<=dc){
              printMazePaths(sr, sc+1, dr, dc, psf+'h');
          }
           if(sr<=dr){
              printMazePaths(sr+1, sc, dr, dc, psf+'v');
          }
  }
let n=3,m=3; //n is the total no. of rows and m is the total number of columms.
printMazePaths(0, 0, n-1, m-1, "");

Output:

hhvv
hvhv
hvvh
vhhv
vhvh
vvhh

Recursion is very important for further topics like Backtracking, DP, Tree, and Graphs.

Leave a Reply

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