Python'da 10 Farklı Yöntem ile Fibonacci Dizisi Oluşturmak

İlgili youtube videosu bağlantısı: youtu.be/R-GHbsd20c8

Video içerisinde hazırlanan kodlar:

from IPython.display import Image, display
display(Image(url='https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Fibonacci_Rabbits.svg/330px-Fibonacci_Rabbits.svg.png', width=500, unconfined=True))

!python -V


# 1.Çözüm: 2 değişken kullanarak
a, b = 1, 1
for i in range(10):
    print(a)
    a, b = b, a+b


#2. Çözüm: for döngüsü ve fonksiyon kullanarak
def fibonacci(n):
    fibo = [1, 1]
    for _ in range(2, n):
        fibo.append(fibo[-1] + fibo[-2])
    return fibo

print(fibonacci(10))


def fibonacci(n):
    a, b = 1, 1
    for i in range(n):
        yield a
        a, b = b, a+b
        
fibo = list(fibonacci(10))
print(fibo)


#3. Çözüm: while döngüsü kullanarak
n = 10
sayi1 = 1
sayi2 = 1
sira = 1

while sira <= n:
    print(sayi1, end=" ")
    sayi1, sayi2 = sayi2, sayi1+sayi2
    sira += 1

#4. Çözüm: Liste ve fonksiyon kullanarak
def fibonacci(n):
    if n<=2:
        return [1,1][:n]
    else:
        a, b = 1, 1
        fibo = [a, b]
        for i in range(n-2):
            a, b = b, a+b
            fibo.append(b)
        return fibo
    
print(fibonacci(10))

#5. Çözüm: Özyineleme (recursive) ile n. fibonacci sayısının bulunması
def fibonacci_sayisi(n):
    if n<=1:
        return n
    else:
        return (fibonacci_sayisi(n-1) + fibonacci_sayisi(n-2))
    
fibonacci_sayisi(4)
#fibonacci_sayisi(3) + fibonacci_sayisi(2)
#1 + 1 + 1 + 0

#6. Çözüm: Özyineleme (recursive) ile ilk n fibonacci sayısının bulunması
def fibonacci_sayisi(n):
    if n<=1:
        return n
    else:
        return (fibonacci_sayisi(n-1) + fibonacci_sayisi(n-2))
    
for i in range(1,11):
    print(fibonacci_sayisi(i))



#7. Çözüm: Özyineleme ve liste (recursive)
def fibonacci_sayilari(n):
    if n<=2:
        return [1, 1][:n]
    else:
        fibo = fibonacci_sayilari(n-1)
        print("test: ", fibo)
        fibo.append(fibo[-1] + fibo[-2])
        return fibo
    
print(fibonacci_sayilari(10))

#8. Çözüm: lambda ve reduce kullanımı
from functools import reduce

fib = lambda n: reduce(lambda x, y: x+[x[-1] + x[-2]], range(n-2), [1,1])
fib(10)



#9. Çözüm: lambda ve map kullanımı
def fibonaccimap(n):
    fibomap = [1, 1]
    any(map(lambda x: fibomap.append(sum(fibomap[-2:])), range(2, n)))
    return fibomap

print(fibonaccimap(10))

#10. Çözüm: List comperehension ve Assignment Expression (python >= 3.8)
fibo = [1, 1]
fibo += [(fibo := [fibo[1], fibo[0]+fibo[1]]) and fibo[1] for k in range(8)]
print(fibo)

 

Editör editi: sitedeki bazı diğer benzer yazılar için;

bkz: Python ve Excel ile 6 Tutturuncaya Kadar Sayısal Loto Oynamak

bkz: Excel içerisinde python kodu yazmak (xlwings kütüphanesi)

bkz: Python'da satır satır text dosyası okumak ve güncellemek

bkz: Python'da string içindeki parantezleri ve yazıları silmek

bkz: Python'da string'i boşluk karakterine göre bölmek (split fonksiyonu)

bkz: Python can only concatenate str (not "NoneType") to str hatası ve çözümü

VitaDemy

12.07.2024 10:32

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Python'da 10 Farklı Yöntem ile Fibonacci Dizisi Oluşturmak

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.