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