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 razumevanje.
Sintaksa:
Rekurzija u Javi Primer 1: Beskonačno mnogo puta…
Listing programa:
Rekurzija u Javi Primer 2: Konačno mnogo puta…
Listing programa:
Rekurzija u Javi Primjer 3: Faktorijel broja
Kako radi ovaj program:
Listing programa:
Rekurzija u Javi Primjer 4: Fibonacci-jev red
Listing programa:
1
2
3
4 |
returntype methodname(){ //kod koji se izvršava methodname(); //pozivanje iste metode } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
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 |
1
2
3
4
5
6
7
8
9
10 |
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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
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 } } Ispis na ekranu: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 |