BİLGİ SAYAMIYORUM beta

C++ ile Fibonacci sayılarını hesaplayan bir fonksiyon nasıl yazılır?

0

Fibonacci sayıları, süper denge, çok estetik, fazla matematik harikası filan gibi şeylerle ifade edilebilir, siz de matematikte ya da hayattaki kişisel anlam yolculuğunuza ne katkıda buluncaksa onun için sonuna kadar abartarak bu sayıları kullanabilirsiniz. Muhtemelen siz de dikdörtgen bir şeklin içindeki yapışık farklı boyutlu kareleri kendine çeyrek daire parçaları gibi alıp içten dışa spiral çizerek genişleyen şekli orda burda görmüşsünüzdür. O fibonacci serisinin sayılarının kenar uzunluklarına eşit olduğu karelerden oluşan görseldir. Fazlasıyla tahrik edici, üstüne gidilesi ve beynimize işlenik bir şeylerin sembolize edilişinde yardımcı bir etkisi olduğu bile söylenebilir. Ancak evrenin her noktasında böyle süper etkileyici şeyler söz konusudur ki bu bizim için böyle görecelidir belki evrene sorsak ahh o sizin etkileyiciliğinizdir filan diyecektir.

Fibonacci fonksiyonu, sıklıkla her programcının yazdığı dilde ilk ortaya koyduğu fonksiyonlardan biri olmuştur. Basit olarak fonksiyonların nasıl çalıştığını, kendi içinde çağırılan / recursive fonksiyonun ne olduğunu anlatan ufak bir yapıdır. 0 dan başlar ama 0 ve 1 in değeri 1 dir yani aslında 2 den başlar ve kendindne önceki 2 fibonacci sayısının toplamına eşittir. İlk yirmi fibonacci sayısını yazarsam olay anlaşılır diye düşünüyorum:

Serinin nasıl ilerlediğini anladıysanız, tahmin ediyorum ki rahatlıkla fonksiyonu da anlayabilirsiniz. "//" ile başlayanlar yorumdur:

     #include <iostream> 

     using namespace std; // Temel kütüphaneleri çağırıyorum

     int fib(int x) {
          if (x == 1 || x == 2) { // İstenen fibonacci sayısı 1 ya da iki ise 1 döndürüyorum
               return 1;  // fib(1) e geldiğinde işlemi sonlandırdığım için fib(0) a hiç düşmüyor
          }
          else { // Fonksiyon tamamen bitmeden içine başka fonksiyon çağırıyorum
               return fib(x-1)+fib(x-2);  // Sayılar 1 veya 2 ye ulaşana kadar bu devam ediyor
          }
      }

Fonksiyonu aşağıdaki şekilde çağırarak, sonucu yazdırabilirim. Buraya çok büyük sayılar yazarsanız, kullandığınız program işlemi tamamlayamayabilir. Zira çoğu derleyici sınırlara sahip olduğu için bu tarz içiçe geçmiş fonksiyonlar sıkıntı yaratabilir. 

     int main() {
          cout << fib(32) << endl;
     }

Bu işlemi sonucu: 2178309 olmalıdır.

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER