سؤالات چالش برانگیز

مجموع اعداد زوج دنباله فیبوناچی
سطح مقدماتی 0

مجموع اعداد زوج دنباله فیبوناچی

دنباله فیبوناچی یکی از دنباله‌های معروف در ریاضی است. دو جمله اول این دنباله 1 و 1 هستند و سایر جملات از مجموع دو جمله قبل از خود بدست می‌آیند. بنابراین جملات این دنباله عبارت‌اند از:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

البته بعضی متون دو جمله اول را 0 و 1 یا برخی دیگر 1 و 2 در نظر می‌گیرند. همان‌طوری که مشاهده می‌شود بعضی جملات این دنباله عدد فرد و برخی دیگر عدد زوج هستند.

سؤال: مجموع اعداد زوج در دنباله فیبوناچی تا قبل از اینکه دنباله به عدد 4 میلیون برسد را حساب کنید.

راه اول:

def fibonacci_sum_even_numbers(n):
    a = 1
    b = 1
    c = 0
    total = 0
    while b < n:
        if b%2 == 0:
            total +=b
        c = a+b
        a = b
        b = c
    return total
print(fibonacci_sum_even_numbers(4000000))

راه دوم:

همین کار را با استفاده از لیست‌ها نیز می‌توان انجام داد.

def fibonacci_sum_even_numbers2(n):
    numbers = [1, 1]
    total = 0
    while numbers[-1] < n:
        a = numbers[-1] + numbers[-2]
        if a%2 == 0:
            total += a
        numbers.append(a)
    return total

در این روش تمام دنباله فیبوناچی در لیست numbers ذخیره می‌شود. واضح است که هیچ نیازی به این کار نیست. بنابراین روش اول از حافظه کمتری استفاده می‌کند و بهینه‌تر است.

جواب نهایی: 4613732

ارسال نظر

0 نظر