C# – Fibonacci Dizisi

Fibonacci dizisi nedir? Fibonacci dizisi, her sayının kendinden öncekiyle toplanması sonucu oluşan bir sayı dizisidir. Bu şekilde devam eden bu dizide sayılar birbirleriyle oranlandığında altın oran ortaya çıkar, yani bir sayı kendisinden önceki sayıya bölündüğünde altın orana gittikçe yaklaşan bir dizi elde edilir. Bu durumda genel olarak n’inci Fibonacci sayısı F(n) şu şekilde ifade edilir:

891f2490410ef44b449e3fc1e10aaf18

Bu da bir Fibonacci dizisidir:4, 4, 8, 12, 20, 32, 52, … Çünkü Fibonacci dizisi herhangi iki sayıdan başlayabilir. Fibonacci sayı dizisindeki sayıların birbirleriyle oranı olan ve altın oran denilen 1,618 sayısı ise doğada, sanatta ve hayatın her alanında görülen ve estetik ile bağdaştırılan bir sayıdır. (wikipedia)

Daha fazlası için şu 2 adresi incelemenizi tavsiye edeceğim;

#1 – http://tr.wikipedia.org/wiki/Leonardo_Fibonacci
#2 – http://tr.wikipedia.org/wiki/Alt%C4%B1n_oran

Biz ise C# aracılığı ile 2 farklı yöntemle fibonacci dizisini elde etmeyi deneyeceğiz;

Yöntem#1 (sadece Main metodunu paylaşıyorum)

static void Main(string[] args)
{
      //Dizinin kaçta biteceğini belirleyen değişken
      int bitis;
      //Kullanıcının üst limiti belirlemesini isteyelim
      Console.Write("Fibonacci Dizisi için üst limiti belirleyin:");
      bitis = Convert.ToInt32(Console.ReadLine());  //int zorunlu yapılabilir...
      //Fibonacci dizisi
      int[] fibonacci = new int[bitis];

      //Hesabı yapan döngümüz
      for (int i = 0; i < bitis; i++)
      {
            //Sıfıra eşitse
            if (i == 0)
            {
                  fibonacci[i] = 0;
            }
            //bire eşitse
            else if (i==1){
                  fibonacci[i] = 1;
            }else{ // birden büyükse
                  fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
            }//if
            //Sonucu ekrana basalım
            Console.WriteLine("Fibonacci[{0}]:{1}", i+1, fibonacci[i]);
      }//for
}//Main

Yöntem#2

    class Program
    {
    
        //Fibonacci hesaplayan Metodumuz (Recursive olmasına dikkat ediniz)
        static int fibonacci(int gelen)
        {
            //Sıfıra eşitse
            if (gelen == 0)
                return 0;
            //bire eşitse
            else if (gelen == 1)
                return 1;
            else
                return fibonacci(gelen - 1) + fibonacci(gelen - 2);
        }

        static void Main(string[] args)
        {
            //Dizinin kaçta biteceğini belirleyen değişken
            int bitis;
            //Kullanıcının üst limiti belirlemesini isteyelim
            Console.Write("Fibonacci Dizisi için üst limiti belirleyin:");
            bitis = Convert.ToInt32(Console.ReadLine());  //try-catch ile int zorunlu yapılabilir...

            //Döngümüz
            for (int i = 0; i < bitis; i++)
            {
                //Sonucu metoda hesaplatıp ekrana basalım
                Console.WriteLine("Fibonacci[{0}]\t:{1}", i+1, fibonacci(i));
            }//for

        }//Main
    }//class

Hakan Müştak ☯ 2014/10

 


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top