Press "Enter" to skip to content

Recursive Özyinelemeli Fonksiyon

Gözde Nergiz 0

Recursive Özyinelemeli Fonksiyon

Recursive Özyinelemeli Fonksiyon,Bir problemi çözerken alt problemlere bölerek basite indirgeyen,kendi kendini çağırarak bir döngü gibi çalışan fonksiyonlardır.

Recursive fonksiyon oluşturulurken dikkat edilmesi gereken nokta,fonksiyonun bitmesini sağlayan şart mutlaka belirtilmelidir.

Örnek-1: 1’den 10 a kadar olan sayıları recursive fonksiyonla ekrana yazdıralım.

package recursivefunction;

/**
 *
 * @author Gozde
 */
public class Recursivefunction {

    public static int sayiyazdir(int sayi)
    {
        if(sayi==10)
        {
            System.out.println(sayi);
            return sayi;
        }
        else
        {
            System.out.println(sayi);
            return sayiyazdir(sayi+1);
        }
    }
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println(sayiyazdir(1));
        
    }
    
}

Fonksiyonumuza parametre olarak sayı değişkenini verdik .1’den 10’a kadar artıracağımız için dikkat ederseniz fonksiyonu çağırdığımız yerde değeri 1 olarak verdik.Bu nedenle bizim bitiş şartımız 10 olacak.Yani sayımız 1’den başlayacak fonksiyon kendini her çağırdığında sayımız bir artacak ve sayımız 10 değerine ulaştığında bize 10 değerini döndürecek ve fonksiyonumuz çalışmayı durduracak.

Örnek-2: Kullanıcıdan alınan sayıdan 1’e kadar olan sayıların toplamını recursive şekilde ekrana yazdıralım.

package recursivefunction;

import java.util.Scanner;

/**
 *
 * @author Gozde
 */
public class Recursivefunction {
 public static int toplam(int sayi)
    {
        if(sayi==1)
        {
            return 1;
        }
        else
        {
            return sayi+toplam(sayi-1);
        }
    }
 
  public static void main(String[] args) {
        // TODO code application logic here
        Scanner s=new Scanner(System.in);
        System.out.println("Bir Sayı Giriniz :");
        int sayi=s.nextInt();
        System.out.println("Toplam : "+toplam(sayi));
    }
}

Bu örneğimizde değerimizi kullanıcıdan aldık.Diyelim ki kullanıcıdan alınan sayı 5 olsun.5’den 1’e kadar olan sayıları toplayıp ekranda toplam sonucu gösterecek.İlk örneğimizde artırarak işlem yapıyorduk ve bitiş şartımızı ona göre belirlemiştik.Bu örnekte de azalarak işlem yapacağız ve bitiş şartımız 1 olacak.

Dikkat edilmesi gereken bir nokta da şu ki : Bitiş değerimiz ne ise geriye döndürdüğü değer de o olmalıdır yoksa programımız yanlış çalışır.Yani bitiş değerimiz 1 ise geri dönüş değerimiz de 1 olmalıdır.

Örnek-3: Bir dizinin elemanlarını recursive olarak ekrana yazdıralım.

package recursivefunction;

public class Recursivefunction {

 public static int diziyazdir(int dizi[], int uzunluk) {
        if (uzunluk == dizi.length - 1) {
            System.out.println(dizi[uzunluk]);
            return dizi[dizi.length - 1];
        } 
        else {
            System.out.println(dizi[uzunluk]);
            return diziyazdir(dizi, uzunluk + 1);
        }
    }

  public static void main(String[] args) {
        // TODO code application logic here
        int dizi[] = {22, 9, 15, 63, 21, 47, 56};
        diziyazdir(dizi, 0);
    }
}

Bu örneğimizde fonksiyonumuzun parametreleri bir dizi ve dizinin uzunluğu.İki parametremiz var çünkü bir dizinin elemanlarını yazdırabilmemiz için bize dizinin indis değeri de gerekli.Diziyi indisini artırarak yazdıracağımız için başlangıç değerini fonksiyonumuzu çağırdığımız yerde 0 olarak verdik,bitiş şartını da diziler 0.indisten başlayarak numaralandırıldığı için dizinin uzunluğunun 1 eksiği olarak belirledik.

Recursive Özyinelemeli Fonksiyon Recursive Özyinelemeli Fonksiyon Recursive Özyinelemeli Fonksiyon 

Recursive Özyinelemeli Fonksiyon Recursive Özyinelemeli Fonksiyon 

Recursive Özyinelemeli Fonksiyon Recursive Özyinelemeli Fonksiyon Recursive Özyinelemeli Fonksiyon

dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi 

dizi dizi dizi dizi dizi dizi dizi

dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi

dizi dizi dizi dizi dizi dizi dizi dizi dizi dizi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir