DEV Community

Swapnil Gupta
Swapnil Gupta

Posted on

Recursion 101

Recursion is always Notorious among programmers, also confusing for the new programmers and beginners. Recursion simply refers to the program or function which calls itself.
Today, I will simplify some recursion problems and concepts inherited.

What is Recursion?
when to use Recursion?
Recursion problems and key takeaways

When a function calls itself until a specified condition is met.

void foo(int i){
print(1);
foo();
}
main(){
foo(i);
}

Enter fullscreen mode Exit fullscreen mode

the above function keeps calling itself and there would be no stopping and printing 1, it is infinite recursion. This will lead to stack overflow, filling the stack till all the memory space.

To avoid that make sure to write base condition.

cnt=0
foo(){
if(cnt==4)
return;
print(cnt)
cnt++
f()
} 

main(){
f();
}
Enter fullscreen mode Exit fullscreen mode

Section 1: Easy Problems:
Problem 1: Printing name N times using recursion in Java

 public class Main
{

    static void printName(int n){
        while(n<1) {
            return;
        }
        n--;
          System.out.println("swapnil");
          printName(n);


    }


    public static void main(String[] args) {
    java.util.Scanner sc= new java.util.Scanner(System.in);
     int n= sc.nextInt();
     int i=1;
        printName(n);
    }
}

Enter fullscreen mode Exit fullscreen mode

Problem 2: Print linearly from N to 1 i.e.
reverse fashion

public class Main
{

    static void printNum(int i,int n){
        if(i<1){
            return;
        }
        else{
          System.out.println(i);
          printNum(i-1,n);
        }

    }


    public static void main(String[] args) {
    java.util.Scanner sc= new java.util.Scanner(System.in);
     int n= sc.nextInt();
     int i=n;
        printNum(i,n);
    }
}

Enter fullscreen mode Exit fullscreen mode

problem 3: printing 1 to n using backtracking
p.s.: you are not allowed to use f(i+1,N)
you need to think in that way the base case is true, after the function is executed first i.e. function keeps calling function then operation, unlike in pervious first operation is done then function is called

public class Main
{

    static void printNum(int i,int n){
        if(i<1){
            return;
        }
        else{
          printNum(i-1,n);
         System.out.println(i);
        }

    }


    public static void main(String[] args) {
    java.util.Scanner sc= new java.util.Scanner(System.in);
     int n= sc.nextInt();
     int i=n;
        printNum(i,n);
    }
}


Enter fullscreen mode Exit fullscreen mode

Discussion (0)