/ 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;
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                