Umut D.

Umut D.

Powered by Jekyll & Github

  • Programlar

  • Fibonacci Sayı dizisi, kendinden önceki iki ardışık sayının toplamının kendisinden sonraki sayıya eşit olmasıdır. Yani her sayı kendisinden önce gelen iki sayının toplamıdır. Örneğin; 0, 1, 1, 2, 3, 5, 8, 13, 21…

    fibonacci-sayilari

    Algoritma derslerinin vazgeçilmezi Fibonacci Sayıları/Dizisi… Bildiğiniz üzere Fibonacci Sayıları, her sayının kendinden öncekiyle toplanması sonucu oluşan bir sayı dizisi.

    Bilgisayarla ilgili bir bölüm okuyup Fibonacci Sayılarına, Iterative (Döngü) ve Recursive (Özyinelemeli) yaklaşımın bu güzide örneğine dair ödev yapmayan öğrenci yok denecek kadar azdır. Ben de üşenmedim, bu konu ve yaklaşıma dair ödevlerde kullanabileceğiniz, fikir alabileceğiniz, kaynak kodlarını kendinize mal edebileceğiniz bir program yazdım. Zira iteratif ve recursif yaklaşımla program çatır çatır çalışıyor ve rekursif yaklaşımının biraz daha yavaş olduğu çıplak gözle görülebiliyor. Zımbırtının özelliklerine gelecek olursak;

    • Iterative (Döngü) ve Recursive (Özyinelemeli)- yaklaşımıyla işlem yapabilme,
    • StopWatch özelliği ile işlem süresini milisaniye- düzeyinde hesaplama,
    • Lazım olur diye(!) metin belgesi olarak kaydetme.
    Fibonacci Sayıları
    Versiyon Durum
    Fibonacci Sayıları (Proje)
    Lisans Durum Arşiv
    MD5: 6da23e3cb3c4733d868c305b90f383e5 MD5: 8ab9a4a11e186ecffa4c18ccc6cd74b9
    Boyut: 130.4 KB Boyut: 724.5 KB
    Gereksinimler: .Net Framework 4.0 Gereksinimler: .Net Framework 4.0
    Platform: Microsoft Windows Programlama Dili: C#
    İndir: Link İndir: Link

    Ek : Sayıların her iki biçimde nasıl hesaplandığını görmeye gelenler için Fibonacci.cs sınıfındaki kodlar:

    using System.Windows.Forms;
     
    namespace FibonacciSayilari
    {
        public class Fibonacci
        {
            // Değişken tanımlarken, değişkeni "Nullable" tanımlamak aklıma geldi.
            // Eğer girilen değer 37'den büyük ise null değer döndürüp kullanıcıya boş Textbox göster.
            private int? _girilenDeger;
     
            public int? GirilenDeger
            {
                get { return _girilenDeger; }
                set
                {
                    if (value <= 37)
                        _girilenDeger = value;
                    else
                    {
                        MessageBox.Show(@"Abartmasak hoş olmaz mı!", @"Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        _girilenDeger = null;
                    }
                }
            }
     
            // I. yol (Iteratif - Döngü)
            public int Iteratif(int gelenSayi)
            {
                int oncekiSayi = 0, sonrakiSayi = 1, sonuc = 1;
     
                for (int i = 0; i < gelenSayi; i++)
                {
                    sonuc = oncekiSayi + sonrakiSayi;
                    oncekiSayi = sonrakiSayi;
                    sonrakiSayi = sonuc;
                }
     
                return sonuc;
            }
     
            // II. yol (Recursive - Özyinelemeli)
            public int Recursive(int gelenSayi)
            {
                if (gelenSayi <= 1)
                    return 1;
     
                return Recursive(gelenSayi - 1) + Recursive(gelenSayi - 2);
            }
        }
    }