30 Nisan 2015 Perşembe

İTERATİF VE REKURSİF FONKSİYONLAR

İTERATİF VE REKURSİF FONKSİYONLAR
İteratif fonksiyonlar ve rekürsif fonksiyonları öncelikle kısaca hatırlıyalım daha sonra  ise bunlarla ilgili örnekler çözelim

İteratif fonksiyonlar:
İteratif fonksiyona kısaca basit,hantal ya da kendisine verilen görevi yerine getireye çalışan fonksiyonlar diyoruz yani sadece verilen işi yapar geriye bir şey döndürmeyen fonksiyon grupları diyebiliriz   bunda normal kodlamada yaptığımız işlemlerdir  ancak kimi yerde rekürsif kimi yerde ise iteratifi kullanmak daha avantajlıdır zaten Algoritma analizi dersinide bunun için alıyoruz
Şunuda bilmekte yarar var ki mecbur kalmadıkca Rekürsif fonksiyonlara tercih etmemek en iyisidir çünkü Algoritma analalizinde bilinen iki önemli kıstas vardır 1-)Zaman 2-)Hafıza  bunun içindir ki iteratif fonksiyonlar basit olmasından dolayı rekürsif fonksiyonlara göre daha hızlı çalışır ve daha az yer kaplamaktadır

Rekürsif Fonksiyonlar
Rekürsif fonksiyonlar Dinamik programlama  diyebiliriz yani kendisini kullanarak sonuç bulan fonksiyon örneğidir 
Rekürsif fonksiyonlardan olmazsa olmaz 3 şartları:
1-)Başlangıç değerleri
2-)Bitiş değeri
3-)adım değerleri

ÖRNEK:  Faktöriyelin hesabını Rekürsif ile yapalım
                     { 1            n=0  }
F(n)=
                     {n*f(n-1)           }

Örnek 91! İşlemini yapalım
               {1          n=0 }
F(98)=
               {98*F(97)   }


ÖNEMLİ NOT:Rekürsif fonksiyondan iteratif fonksiyona geçiş sağlandığında sonuça daha çok yaklaşırız ve gerek çözümleme gereksede Bilgisayar kodlaması daha kolay bir işlemdir
Rekürsif Fonksiyonlar  ve İteratif Fonksiyonlar Bilgisayar kodu:

8
9
10
11
12
13
14
15
16
//recursive Faktoriyel Hesaplama
public int FaktoriyelRecursive(int n)
{
    if (n <= 1)    // Sonlandırma şartı
        return 1;
    return n * FaktoriyelRecursive(n - 1); // 1 azaltarak kendini çağrıyor
}

//iteratif Faktoriyel Hesaplama
public int FaktoriyelIteratif(int n)
{
    int sonuc = 1;
    for(int i = 1; i <= n; i++)
        sonuc *= i;
    return sonuc;
}



Hiç yorum yok:

Yorum Gönder