Python temelleri-Python da Fibonacci sayıları hesaplaması ve recursive(özyineleme kullanarak fibonacci hesabı) kullanımı:

Öncelikle Fibonacci sayıları nedir anlayalım.

Tanımı: Her sayının kendisinden önceki iki ardışık sayının toplamına eşit olduğu sayı dizisine Fibonacci dizisi denmektedir. Bu dizinin terimleri ise Fibo sayısı olarak adlandırılmıştır.

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ..şeklinde devam eder. Dizi temelde 1 sayısından başlar. Başlangıç sayısı bir kez daha tekrar edildikten sonra sonraki sayılar önceki 2 sayının toplamı ile oluşturulur. Elde edilen sonuç rakamın sağ tarafına yazılır. Bu sayıların tSadece sanat eserlerinde değil doğada da Fibonacci dizisi ile oluşturulmuş altın oran vardır. Papatya ayçiçekleri ve tütün bitkisinin yaprakları buna örnek olarak gösterilebilir. Bunun dışında çam kozalaklarının iç kısmında bulunan spiraller de Fibonacci spiralleri ile birebir aynıdır. Hala gizemini koruyan ve nasıl yapıldığı tam olarak bilinmeyen Mısır Piramitleri de altın oran baz alınarak inşa edilmiştir.oplamı altın oranı oluşturur. Altın oran birçok sanat eserinde kullanılmıştır.

Örnek 1: Girilen bir sayının (1 ve 1 den büyük tamsayılar olması gerekir) fibonacci serisindeki hangi sayıya denk geldiğini veren bir python program örneği yapalım.

Python kodları:

n=int(input("bir sayı girin:"))
def fib(n):
if n < 1:
return "bu sayılar 1 ve üstünde olmalıdır"
if n < 3:
return 1

eleman_1 = eleman_2 = 1
toplam = 0
for i in range(3, n + 1):
toplam = eleman_1 + eleman_2
eleman_1, eleman_2 = eleman_2, toplam
return toplam

print(fib(n))

Örnek 2: Belli bir aralıktaki Fibonacci sayılarını ekrana yazan python kodlarını görelim.

def fib(n):
if n < 1:
return "bu sayılar 1 ve üstünde olmalıdır"
if n < 3:
return 1

eleman_1 = eleman_2 = 1
toplam = 0
for i in range(3, n + 1):
toplam = eleman_1 + eleman_2
eleman_1, eleman_2 = eleman_2, toplam
return toplam


for n in range(0, 10): # test edilen aralık
print(n, "->", fib(n))

Örnek 3: Az önceki örnek 2'nin fonksiyonun recursive özelliği ile kullanımına örnek yapalım. İki kodda aynı sonuçları üretir. Recursive kodunun daha az olduğuna dikkat edin.

def fib(n):
if n < 1:
return None
if n < 3:
return 1
return fib(n - 1) + fib(n - 2)

for n in range(0, 10): # test edilen aralık
print(n, "->", fib(n))









Yorum Gönder

0 Yorumlar