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:
1
2
3
4
returntype methodname(){
//kod koji se izvršava
methodname(); //pozivanje iste metode
}
Rekurzija u Javi Primer 1: Beskonačno mnogo puta… Listing programa:
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
 Rekurzija u Javi Primer 2: Konačno mnogo puta… Listing programa:
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
 Rekurzija u Javi Primjer 3: Faktorijel broja Kako radi ovaj program:
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
Listing programa:
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
 Rekurzija u Javi Primjer 4: Fibonacci-jev red Listing programa:
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

Comments

comments