## Recursion in Java

Recursion Definition – Recursion is a technique in programming language, where the function calls itself directly or indirectly is called Recursion.

In this blog, I have added beginner-level examples of recursion.

## Breakdown of Recursive Algorithm

Every recursive algorithm follows the below steps

• Contains Base Case(Stopping point for the algorithm).
• Work toward the case.
• Recursively calling itself until it reaches the base case.

## 5 Beginner Level Recursion Problems.

If you are a beginner to recursion then the following are the very simple and easy level problems that you must know before jumping into Leetcode or GFG.

## 1] Factorial of Number

Logic

• Declared a mul variable outside the recursion method otherwise, it will also be changed to the initial value once the recursive method calls itself.
• Added the main logic of how the factorial of a number is calculated.
• Added the base condition, when the n value becomes 0 or 1 returning the factorial(mul).
• For each recursive call of method keep decrementing the value of n.
• Calling the method recursively.
```package Recursion;

public class FactorialNumber {
public static void main(String[] args) {
int n=5;
System.out.println(fact(n));
}
public static int mul=1;
public static int fact(int n){
mul=mul*(n);
if(n==0||n==1){
return mul;
}
n--;
return fact(n);
}
}
```

## 2] Fibonacci Series of Number

```package Recursion;

public class FibonacciSeries {
public static void main(String[] args) {
System.out.println(0);
System.out.println(1);
System.out.println(fibonacciSeries(10));
}
public static int start=0;
public static int prev=1;
public static  int current=1;
public static int fibonacciSeries(int n){
if(n-3==0){
current=start+prev;
return current;
}
current=start+prev;
start=prev;
prev=current;
n--;
System.out.println(current);
return fibonacciSeries(n);
}
}
```

## 3] Palindrome

```package Recursion;

public class PalindromeUsingRecursion {
public static void main(String[] args) {
String s="abbbba";
System.out.println(checkPalin(s));
}
public static boolean checkPalin(String s){
if(s.length()==0 || s.length()==1){
return true;
}
if(s.charAt(0)==s.charAt(s.length()-1)){
return checkPalin(s.substring(1,s.length()-1));
}
return false;
}
}
```

## 4] Print N numbers in Increasing Order

```package Recursion;

public class PrintnNumbers {
public static void main(String[] args) {
int n=10;
System.out.println(printNumbersIncreasingOrder(n));
}
public static int start=0;

public static int printNumbersIncreasingOrder(int n){
if(start+1==n){
start++;
return start;
}
start++;
System.out.println(start);
return printNumbersIncreasingOrder(n);
}
}
```

## 5] Print N numbers in Decreasing Order

```package Recursion;

public class PrintnNumbers {
public static void main(String[] args) {
int n=10;
System.out.println(printNumbersDecreasingOrder(n));
}
public static int printNumbersDecreasingOrder(int n){
if(n==1){
return n;
}
System.out.println(n);
n--;
return printNumbersDecreasingOrder(n);
}
}
```