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