Recursion in Java

Recursion in java is a process in which a method calls itself continuously. A method in java that calls itself is called recursive method.

It makes the code compact but complex to understand.

Syntax
returntype methodname(){
//code to be executed
methodname();//calling same method
}

Recursion - Infinite times

Example
snippet
public class RecursionExample1 {
static void p(){
System.out.println("hello");
p();
}

public static void main(String[] args) {
p();
}
}
Output
hello hello ... java.lang.StackOverflowError

Recursion - Finite times

Example
snippet
public class RecursionExample2 {
static int count=0;
static void p(){
count++;
if(count<=5){
System.out.println("hello "+count);
p();
}
}
public static void main(String[] args) {
p();
}
}
Output
hello 1 hello 2 hello 3 hello 4 hello 5

Recursion - Factorial Number

Example
snippet
public class RecursionExample3 {
	static int factorial(int n){    
		  if (n == 1)    
		    return 1;    
		  else    
		    return(n * factorial(n-1));    
	}    

public static void main(String[] args) {
System.out.println("Factorial of 5 is: "+factorial(5));
}
}
Output
Factorial of 5 is: 120

Working of above program:

factorial(5) 
   factorial(4) 
      factorial(3) 
         factorial(2) 
            factorial(1) 
               return 1 
            return 2*1 = 2 
         return 3*2 = 6 
      return 4*6 = 24 
   return 5*24 = 120

Recursion - Fibonacci Series

Example
snippet
public class RecursionExample4 {
	static int n1=0,n2=1,n3=0;    
	 static void printFibo(int count){    
	    if(count>0){    
	         n3 = n1 + n2;    
	         n1 = n2;    
	         n2 = n3;    
	         System.out.print(" "+n3);   
	         printFibo(count-1);    
	     }    
	 }      

public static void main(String[] args) {
	int count=15;    
	  System.out.print(n1+" "+n2);//printing 0 and 1    
	  printFibo(count-2);//n-2 because 2 numbers are already printed   
}
}
Output
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Related Tutorial
Follow Us
https://www.facebook.com/Rookie-Nerd-638990322793530 https://twitter.com/RookieNerdTutor https://plus.google.com/b/117136517396468545840 #
Contents +