/ Published in: C
Fibonacci dizileri ile ilgili fonksiyonlara örnek. -Yorumlu/Açıklamalı-
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <stdio.h> /* Fibonacci Dizisi oluşturmak için kullanacağımız fonksiyonu yazıyoruz. Bu fonksiyon n. Fibonacci sayısına kadar olan diziyi ekrana yazdıracak. Bu fonksiyon geriye hiçbir değer döndürmeyeceği için void olarak tanımlıyoruz. */ void FibonacciDizisi(int diziUzunlugu) { int a,b,c,sayac; /*a'ya -1'i b'ye 1'i atıyoruz. Bunu neden yaptığımıza gelirsek fibonacci sayılarını bulabilmemiz için bu şekilde atamamız gerekiyor. Niye olduğunu fonksiyonumuz üzerinde bir örnekle açıklayalım. Mesela diziUzunlugu = 3 olsun. for döngüsü işlemeye başladı. sayac= 0 iken c= a+b yani (-1)+(1)=0 oluyor => c=0 c'yi ekrana yazdırdık. Şimdi a'yı b'ye, b'yi c'ye eşitledik eşledik. a=1 b=0 Yine c= a+b oldu c=1 c'yi ekrana yazdırdık. Yine a=b, b=c. a=0, b=1 c= a+b oldu c=1 c'yi ekrana yazdırdık c=1 İlk 3 sayıyı yazdırmış olduk. 0 1 1 */ a=-1; b=1; for(sayac=0;sayac<diziUzunlugu; sayac++) { c=a+b; a=b; b=c; } } /* Şimdi bize n. Fibonacci sayısını verecek olan fonksiyonu yazıyoruz. Bize n. Fibonacci sayısını geri döndüreceği için int olarak tanımlıyoruz. Yani x diye integer türünde bir değişkenimizin olduğunu varsayarsak: x = FibonacciSayisi(10); diyerek x'e 10.Fibonacci sayısını atayabiliriz. */ int FibonacciSayisi(int n) { /* Dikkat ederseniz ilk fonksiyonumuzdaki a,b, sayac değişkenini burada tekrar tanımlıyoruz. Çünkü ilk fonksiyondaki a,b ve sayac değişkenleri ilk fonksiyonun kapsama alanındaydı, yani ilk fonksiyonun lokal değişkenleriydi. Bir nevi { } yani kıvırcıklar değişkenlerin kapsama alanını da gösteriyor... */ int a,b,sayac; a=-1; b=1; /*Yine ilk fonksiyondaki gibi a=-1 b=1 diyoruz. Bu sefer döngünün içinde 2 değişken kullandık. 3 taneyle olandan farkı yok, maksat marjinallik... */ for(sayac=0;sayac<n;sayac++) { b += a; a = b-a; } return b; } // Sıra geldi ana fonksiyonumuza... int main() { int dizi,sayi,secim; /*Kullanıcıya 1 veya 2'yi girerek istenilen fonksiyonu seçmesini sağlıyoruz. */ if(secim == 1) { FibonacciDizisi(dizi); } else if(secim == 2) { //Gördüğünüz üzere FibonacciSayisi fonksiyonunun dönüş değerini direkt printf ile ekrana yazdırabiliyoruz. Like a Boss. } //Kullanıcı 1 veya 2 dışında birşey tuşlarsa, ona bunu yapmaması gerektiğini aşağıdaki else bloğuyla söylüyoruz. else { } return 0; }