mehmetduran.com - Paylaşmak Güzeldir...
C#'ta Recursive ve Dinamik Programlama ile Fibonacci Algoritması
Bu yazımda Fibonacci sayılarını C# ile hem recursive yöntem ile hem de dinamik programlama yöntemi ile bulan algoritmanın kodlarını sizlerle paylaşacağım. Bilindiği gibi Fibonacci sayıları meşhur tavşan üreme problemi üzerine Fibonacci tarafından bulunan ve altın oran olarak ta bilinen sayılar kümesidir. Ayrıca bu sayılar dizisi birçok bitki yapısı için de geçerlidir. 0 ile başlar ve her sayı kendinden önceki iki sayının toplamı şeklinde gider. Şimdi bu sayıları hem recursive yöntem ile hem de dinamik programlama yöntemi ile bulan C# kodlarına göz atalım.

Vereceğim kodlarda iki yöntem için de metot hazırladım ve bu metotlar parametre olarak aldıkları index değerleri ile o indexte yer alan fibonacci değerini bulmakta. Bu metotlar ve kullanımı aşağıdaki gibi.

    /*Dinamik programlama*/
    public int[] fibonacci_sayilari;
    public int fibonacci_dinamik_programlama(int kacinci)
    {
      for (int i = 0; i <= kacinci; i++)
      {
        if (i == 0  i == 1)
        {
          fibonacci_sayilari[0] = 1; fibonacci_sayilari[1] = 1;
        }
        else
        {
          fibonacci_sayilari[i] = fibonacci_sayilari[i - 1] + fibonacci_sayilari[i - 2];
        }
      }
      return fibonacci_sayilari[kacinci];
    }
 
    /*recursive*/
    public int fibonacci_recursive(int kacinci)
    {
      if (kacinci <= 1) return 1;
      return fibonacci_recursive(kacinci - 1) + fibonacci_recursive(kacinci - 2);
    }
 
    // 5. index'te yer alan fibonacci değerini hesaplama
    int deger1 = fibonacci_recursive(5);
 
    fibonacci_sayilari = new int[6];
    int deger2 = fibonacci_dinamik_programlama(5);

Bu şekilde fibonacci sayılarını bulabiliyoruz. Recursive algoritma performans olarak dinamik algoritmanın oldukça gerisinde. Ancak değişken sayısından ve kullandığı hafıza açısından  dinamik programlamaya göre avantajlı olsa da dinamik programlama recursive algoritmaya göre oldukça hızlı ve performanslı.

İyi Çalışmalar.
Mehmet Duran 22 Mayıs Cuma 2009 0 21499 4,3
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Bilişim Günleri 2009 (12-13-14 Mayıs) Object Oriented Javascript (E-Book) Dinamik Meta Tag Oluşturma BlogEngine.NET Türkçe Oluyor MySql'de Fonksiyon Tanımlama ve Kullanma
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Bu Yazı Hakkında Henüz Yorum Yapılmamış.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Başarısızlıklarınız ile soylu bir şekilde yüzleşin, başarıdan farkı kalmayacaktır.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009