Java’da Metodlar 4 (Methods)
Metodlarda Özyineleme(Recursion in Methods)
Recursion işlemleri metodun belli şartları sağlayarak kendini sürekli çağırması olayıdır. En iyi faktöriyel bulma örneğini veririsek, normalde for döngüsünde belli bir sayıya kadar tüm sayıları çarparak faktöriyel işlemini elde ederiz. Bu işlemi metodlar ile de halldebiliriz. Her seferinde en üst sayıdan başlayarak 1’er azaltarak. Şimdi örneğimize geçelim;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package metodlar; public class recursion { static int faktoriyel(int s1){ if(s1==1) return 1; else return(s1*(faktoriyel(s1-1))); } public static void main(String[] args) { System.out.println(faktoriyel(6)); } } |
Eğer sayımız 1 olsaydı return 1; ifadesi döner döngü sonlanırdı. Fakat gönderdiğimiz değer 1 den farklı bir sayi ise her seferinde sayımız 1 azltılıp; bir öncekiyle çarpılması gerekecektir. Bunun için faktoriyel(s1-1) yaparak her seferinde bir azaltıp önceki sayıyla çarpıyoruz s1==1 olana kadar.
İterative: Metod içerisinde döngü kullanarak oluşturulan recursion illemlerine denir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package metodlar; public class iterative { static int islem(int j){ int deger=1; for (int i = j; i >0; i--) { deger*=i; } return deger; } public static void main(String[] args) { System.out.println(islem(6)); } } |
Gördüğünüz gibi tanımladığımız metod içerisinde döngülerlede yapmak mümkün bi önceki örnekteki aynı algoritma mantığı ile.
Fibonacci sayılarınıda recusive fonksiyonu ile bulabiliriz. Aşağıda kısa bi hatırlatmayla ne olduğuna bakalım fibonacci sayılarına;
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55… her sayi kendinden önceki 2 sayınn toplamı şeklinde gider.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package metodlar; public class fibonacci { static int fibonacc(int x){ if(x<=1) return x; else return fibonacc(x-1)+fibonacc(x-2); } public static void main(String[] args) { System.out.println(" Fibonacci 21. sayısı: "+fibonacc(21)); } } |
Emre Hocam yazı serinizi önemle takip ediyorum…Yazılarınız için teşekkürler..İyi Çalışmalar Kolay Gelsin…
Teşekkürler kardeşim… Sizlerede kolay gelsin… Takipte kalın yeni serilerimizde buluşmak dileğiyle…