27. Rekurzija u Javi

 

Rekurzija u Javi je proces u kojem metoda poziva samu sebe kontinuirano. Metoda u Javi koja poziva samu sebe naziva se rekurzivna metoda. Ovo čini programski kod kompaktnim, ali ponekad kompleksnim i težim za razumijevanje. Sintaksa:

returntype methodname(){
//kod koji se izvršava
methodname();  //pozivanje iste metode
}

Rekurzija u Javi Primjer 1: Beskonačno mnogo puta...
Listing programa:

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

    public static void main(String[] args) {
        p();
    }
}

Ispis na ekranu:
hello
hello
...
java.lang.StackOverflowError

 

Rekurzija u Javi Primjer 2: Konačno mnogo puta...
Listing programa:

// Rekurzija u Javi Primjer 2: Konačno mnogo puta...
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();
    }
}

Ispis na ekranu:
hello 1
hello 2
hello 3
hello 4
hello 5

 

Rekurzija u Javi Primjer 3: Faktorijel broja
Kako radi ovaj 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

Listing programa:

Rekurzija u Javi Primjer 3: Faktorijel broja
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("Faktorijel od 5 je: "+factorial(5));
}
}

Ispis na ekranu:
Faktorijel od 5 je: 120 

 

Rekurzija u Javi Primjer 4: Fibonacci-jev red
Listing programa:

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); //ispis 0 i 1
        printFibo(count-2); //n-2 zato što su 2 broja  već ispisana
    }
}
Izlaz:

Ispis na ekranu:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

    Objektno orijentisano programiranje u Javi    Index