Java Programlama

Java recursive functions(Yinelemeli Fonksiyonlar)

Sıradaki konumuz yinelemeli fonksiyonlar yani ingilizce deyimiyle recursive functions. Yinelemeli fonksiyonlar içerisinde kendisini çağıran fonksiyonlar demektir. Peki ne demek kendi içerisinde tekrar kendini çağırmak. Hemen bir örnekle açıklayalım. Yinelemeli fonksiyon denildiğinde her programlama dilinde temel birkaç örnek vardır. O da faktoriyel hesaplayan program ve fibonacci sayılarının hesaplayan program. Özellikle vize yada final sınavlarında da sık sorulan sorulardandır.

Dışarıdan girilen sayının faktoriyelini Hesaplayan Program:

import java.util.Scanner; //
class faktoriyel{
// Özyinelemeli(Recursive) Fonksiyonumuz
static int faktoriyel(int fak) {
if (fak==0) {
return 1;
}
else{
return fak*faktoriyel(fak-1); // burada faktoriyel fonksiyonumuz return le kendini tekrar çağırıyor.
}
}
// main(ana) fonksiyonumuz
public static void main(String[] args) {
Scanner oku = new Scanner(System.in);
System.out.println("Bir sayı giriniz");
int fak=oku.nextInt();
int sonuc=faktoriyel(fak);
System.out.println("Faktoriyel sonucu = "+sonuc);
}
}

Dediğim gibi bu fonksiyonlara en iyi örneklerden birisi fibonacci dizisi hesaplayan programdır. Hemen kodlarını yazalım.

Fibonacci Dizisi Hesaplayan Program

Fibonacci dizisi kendinden 0 dan başlayarak kendinden bir önceki sayıyı toplayarak giden bir dizidir. Örnek olarak:

0+1=1 , 1+2=3 , 3+2=5 , 5+3=8 , 8+5=13 , …. diye gider.

import java.util.Scanner;
class fibonacci{
//Recursive(<strong>Özyinelemeli</strong> )Fonksiyonumuz
static int fibo(int n) {
if (n <= 1) {
return n;
}
else {
return fibo(n-1) + fibo(n-2); // return ile recursive ediyoruz.
}
}
// main(ana) fonksiyonumuz
public static void main(String[] args) {
Scanner oku = new Scanner(System.in);
System.out.println("Fibonacci uzunlugu giriniz");
int fib=oku.nextInt();
int sonuc=fibo(fib);
System.out.println("Fibonacci sonucu = "+sonuc);
}
}

Evet arkadaşlar. Elimden geldiğince recursive fonksiyonları anlatmaya çalıştım. Bir sonraki makalemizde görüşmek dileğiyle…