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:
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