Rekurzija u Javi

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

Close Menu
Show Buttons
Hide Buttons