Fibonacci dizisi C++

Fibonacci Dizisi C



Fibonacci serisi/dizisi, bir serideki son iki sayının toplamı alınarak bir sonraki sayı elde edildiğinde oluşturulan bir sayı dizisidir. İlk iki sayı her zaman 0 ve 1'dir. Fibonacci serisi herhangi bir programlama dilinde elde edilebilir ancak burada kaynak kodunu C++ programlama dilinde uygulayacağız. Matematikte, Fibonacci'nin dizisi örnek bir formüle sahip özyineleme bağıntısı ile açıklanır.

Fn = Fn-1 + Fn-2

Bu öğretici, bir Fibonacci sayıları dizisi oluşturmak için farklı metodolojiler içerecektir.







örnek 1



Bu örnekte, ilk olarak, cin ve cout akışlarını etkinleştirmek için giriş ve çıkış akışları kitaplığı kullanılır, ayrıca bu kitaplık aracılığıyla kullanıcının katılımı da teşvik edilir. Ana programın içinde, iki tamsayı tipi değişken alacağız ve bunları sıfır değeri ilan edeceğiz. Sıfır olarak başlatılan ve daha sonra kullanılmak üzere yerleştirilen başka bir nextterm değişkeni de kullanılır. Kullanıcıdan Fibonacci serisinde istediği bir sayıyı girmesini isteyeceğiz. Başka bir deyişle, çıktı olarak görüntülenen satır sayısı, kullanıcının girdisine bağlıdır. Kullanıcının gireceği belirli sayı, sonuç bu satırlarda cevabı içerecektir.







Kullanıcının diziyi hesaplamak için girdiği belirli bir sayıya kadar yinelemek için bir 'for' döngüsüne ihtiyacımız var. Bu, birkaç satırlık bir tür sınırdır. Numarayı kontrol etmek için bir if ifadesi kullanılır; eğer bir ise, herhangi bir değişiklik yapmadan olduğu gibi gösterin. Benzer şekilde, ikinci sayı da aynı şekilde görüntülenecektir. Fibonacci dizisinde ilk iki sayı görüntülenir. Devam etmek için, devam deyimini kullandık. Seriyi daha fazla hesaplamak için her iki değeri de ekleyeceğiz. Ve bu serideki üçüncü sayı olacak. Bu takas işlemi başladıktan sonra, birinci değişkene ikinci değişkenin değeri atanacak ve ikinci değişken, nextterm değişkeninde saklanan üçüncü değeri içerecektir.

Sonraki terim = t1 + t2;



T1 = t2;

T2 = sonraki dönem;

Artık her değer virgülle ayrılmış olarak görüntülenir. Kodu bir derleyici aracılığıyla yürütün. Girdi dosyasında bulunan kodun çıktısını kaydetmek için '-o' kullanılır.

$ g++ fib fib.c
$. / yalan

Görüyorsunuz ki program çalıştırıldığında kullanıcı girdiği sayıyı 7 olarak girmek isteyecek, ardından Fibonacci dizisi hangi noktada 7. noktaya gelmiş olursa olsun sonuç 7 satır olacaktır.

Örnek 2

Bu örnek, sonraki terim değerini sınırlayarak Fibonacci serisinin hesaplanmasını içerecektir. Bu, Fibonacci serisinin istediğiniz ölçüde belirli bir sayı sağlanarak özelleştirilebileceği anlamına gelir. Önceki örnekten farklı olarak, sonuç satır sayısına değil, bir sayı ile verilen seri sayısına bağlıdır. Ana programdan başlayacağız, değişkenler aynı ve kullanıcı katılımı yaklaşımı da aynı. Böylece ilk iki değişken başlangıçta sıfır olarak başlatılır, sonraki terim değişkeni sıfır olarak bildirilir. Ardından kullanıcı numarayı girecektir. Daha sonra her zaman 0 ve 1 olan ilk iki terim görüntülenir.

Sonraki terim değeri, ilk iki değişkende bulunan sayıların toplanmasıyla elde edilen değere atanır. Burada, nextterm değişkenindeki değer kullanıcının verdiği sayıya eşit veya ondan küçük olana kadar seri oluşturma koşulunu uygulamak için bir while döngüsü kullanılır.

iken (sonraki dönem <= n)

Bu while döngüsünün içinde, sayıları geriye doğru değiştirerek mantık uygulanacaktır. nextterm değişkeni yine değişkenlerin değerlerini toplayacaktır.

Sonraki terim = t1 + t2;

Şimdi dosyayı kaydedin ve terminalde kodu yürütmek için derleyin.

Kodu çalıştırdığınızda sistem sizden pozitif olması gereken bir sayı isteyecektir. Ardından, hesaplamada 55. sayıya kadar bir dizi sayının görüntülendiğini göreceksiniz.

Örnek 3

Bahseteceğimiz bu kaynak kod, Fibonacci serisini hesaplamak için farklı bir yöntem içerecektir. Şimdiye kadar ana programın içindeki serileri hesapladık. Bu örnek, bu sayı dizisini hesaplamak için ayrı bir işlevin katılımını kullanır. İşlevin içinde, işleme devam etmek için özyinelemeli bir çağrı yapılır. Bu nedenle aynı zamanda bir özyineleme örneğidir. Fonksiyon, serinin hesaplanacağı parametredeki sayıyı alacaktır. Bu numara ana programdan gönderilir. Sayının 1'den küçük veya 1'e eşit olup olmadığını kontrol etmek için bir if ifadesi kullanılır, ardından seriyi hesaplamak için en az iki sayıya ihtiyacımız olduğundan sayının kendisini döndürür. İkinci durumda, koşul yanlış olduğunda ve sayı 1'den büyük olduğunda, işlevin kendisine özyinelemeli bir çağrı kullanarak seriyi tekrar tekrar hesaplayın.

fib (n-1) + fib (n-2);

Bu da birinci kısımda toplam sayıdan bir önceki sayının fonksiyona iletildiğini, bu değerin toplam sayıdan önce iki sayıyı parametre olarak içeren hücreden elde edilen sayıdan çıkarılacağını gösterir.

Şimdi ana programda değişkene sayı atanır ve sayıyı işleve geçirmek için ilk işlev çağrısı yapılır. Şimdi cevabı almak için dosyanın kaynak kodunu terminalde yürütün. Burada girilen sayı 7 olduğu için cevabın '13' olduğunu göreceksiniz, dolayısıyla dizi 0+1+1+2+3+5+8+13 olacak.

Örnek 4

Bu örnek, Fibonacci serisini hesaplamak için OOP (nesne yönelimli programlama) yaklaşımını içerir. Bir sınıf GFG oluşturulur. Public kısmında, Fibonacci serisini saklayacak bir diziye sahip olacak bir fonksiyon yaratılır.

F [n +2];

Burada n, başlangıçta 0 olarak beyan edilen sayıdır.

F[0] = 0;

F[1] = 1;

0 ve 1 indeksindeki sayılar 0 ve 1 olarak bildirilir.

Bundan sonra Fibonacci serisinin hesaplanacağı bir 'for' döngüsü kullanılır. Önceki iki numara diziye eklenir ve saklanır.

F[i] = f[i-1] + f[i -2];

Bundan sonra, belirli bir dizindeki belirli sayı döndürülür.

Nesne kullanılarak bir işlev çağrısı yapılır.

g.fib(n);

Şimdi kodu çalıştırın ve sayı 11 olduğu için dizinin 11. haneye kadar olacağını göreceksiniz.

Çözüm

Bu makale 'Fibonacci dizisi C++', önceki iki sayıyı toplayarak bir dizi oluşturmak için kullanılan farklı yaklaşımların bir karışımıdır. Recursion yöntemine ek olarak basit bir takas tekniği ile ve diziler yardımıyla bu sayıları seri halinde üretebiliriz. Fibonacci serisini oluşturmak için sayıların tamsayı veri türünde olması önerilir. Satır sayısına ve dizi sayısına sınırlamalar uygulayarak seriyi hesaplayabiliriz.