Python ile Fibonacci Sayılarını Bulma Örneği
Bu yazımızda, Python ile Fibonacci sayılarını bulmak için örnek bir kodlama yapacağız. İlk olarak Fibonacci dizisi olarak da bilinen bu yapıyı açıklayalım.
Fibonacci dizisi (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 …), matematikte oldukça ünlü bir sayı dizisidir. Bu dizi, her sayının kendisinden önce gelen iki sayının toplamı olarak oluşur. Başlangıçta genellikle ilk iki sayı olarak 0 ve 1 kabul edilir.
Örneğimiz kodlarken fonksiyonlardan ve if-elif-else koşul ifadelerinden yararlandık. Bakınız:
1 2 3 4 5 6 7 8 9 10 |
def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) sayi = int(input("Kaç terimli Fibonacci dizisi oluşturmak istiyorsunuz? ")) for i in range(sayi): print(fibonacci(i), end=", ") |
Bu kod, kullanıcıdan bir sayı alır ve o sayıya kadar olan Fibonacci dizisinin terimlerini ekrana yazdırır. Örneğin sayi
değeri olarak 10 girerseniz, program size ilk 10 Fibonacci sayısını verecektir: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
. Kodu çalıştırmak için: Trinket
Ancak, yukarıdaki yöntem rekürsif olduğu için büyük sayılarda çok yavaş çalışabilir. Eğer büyük sayılar için Fibonacci terimlerini hesaplamak isterseniz, daha verimli bir algoritma kullanmanız önerilir. Örneğin:
1 2 3 4 5 6 7 8 9 10 11 12 |
def fibonacci(n): if n <= 1: return n a, b = 0, 1 for _ in range(2, n + 1): a, b = b, a + b return b sayi = int(input("Kaç terimli Fibonacci dizisi oluşturmak istiyorsunuz? ")) for i in range(sayi): print(fibonacci(i), end=", ") |
Yukarıdaki kod, Fibonacci dizisinin n
‘inci terimini hesaplamak için kullanılır. İlk iki terimi (0 ve 1) başlangıç değerleri olarak belirleyerek, her yeni terimi bir önceki iki terimin toplamı olarak hesaplar. Bu süreci, istenen terime ulaşana kadar devam ettirir. Bu yaklaşım, her terimi sadece bir kez hesapladığı için önceki basit rekürsif yönteme göre daha verimlidir. Kodu çalıştırmak için: Trinket