Python ile Fibonacci Dizisi

Uzun zaman önce bu LINK‘te C# ile Fibonacci dizisi ile ilgili bir yazı paylaşmış, eş zamanlı olarak bir çok detay da paylaşmıştım. Eğer özel olarak ilginiz varsa orada da farklı bilgiler edinebilirsiniz. Project Euler sitesinde denk gelince basit algoritma antrenmanı olduğu için paylaşmakta istedim. Bu ve her seviyede problemleri çözmekten hoşlanıyorsanız Project Euler sitesini incelemenizi, üye olmanızı şiddetle tavsiye ederim.

Project Euler sitenin temel prensibi sonuçların paylaşılmaması yönünde ama Fibonacci Dizisi yazmak en az Hello World kadar ünlü olduğu için ve geçmişte C# ‘ta da burada eşini yazdığım için bir zararı olmayacağına kanaat getirdim. Belki staj, ödev yapan kardeşlerime faydası dokunur.

İstenen, 4milyon’dan küçük tüm çift sayılı Fibonacci Dizisi sayılarının toplamının kaç olduğu;

# -*- coding: utf-8 -*-

"""
@author: Hakan Müştak @2022 #hmustak
@mail: hakan[@]mustak.org
@web: mustak.org
@social: twitter.com/hmustak
"""

fibonacci = []  # fibonacci sayıların tutulacağı dizi
cift_toplam = 0  # çift olanların toplamının tutulacağı değişken

# kaç Fibonacci Dizisi döndürelim : 35 ile buldum ben...
for i in range(0, 35):
    # Soru 0 ve 1'i verdiği için aynen ekliyoruz.
    if i == 0:
        fibonacci.append(0)
    elif i == 1:
        fibonacci.append(1)
    else:
        # Fibonacci Dizisi kendisinden önceki 2 rakamın toplamıdır
        fibTop = (fibonacci[i - 1] + fibonacci[i - 2])
        # Toplam 4M'den küçük olduğu sürece toplamaya devam
        if (fibTop < 4_000_000):
            # Çift olanları toplayalım
            if (fibTop) % 2 == 0:
                cift_toplam += fibTop
            # Fibonacci Dizisini oluşturalım
            fibonacci.append(fibTop)

# ve sonuçları ekrana basalım
print(fibonacci)
print(cift_toplam)

 

Hakan Müştak
@2022

 

 


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top