簡體   English   中英

通過考慮 Fibonacci 數列中值不超過 400 萬的項,找到偶數項的總和

[英]By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms

尋求有關此項目的幫助 歐拉問題:通過考慮 Fibonacci 數列中值不超過 400 萬的項,找到偶數值項的總和。

我相信還有其他更簡單的方法可以做到這一點,但我才剛剛開始! 我已經設法讓代碼輸出斐波那契數列的偶數項之和,但我不知道如何將輸出限制設置為 400 萬(我剛剛設置了范圍 1 - 10 進行測試)。 無論如何,是否可以使用我編寫的當前代碼來執行此操作,而不是重新開始?

def fibonacci(n): 
    if n==0:
        return 0
    elif n==1 or n==2:
        return 1
    elif n>2:
        return (fibonacci(n-1)+fibonacci(n-2))


fib_list=[fibonacci(n) for n in range (1, 10) if fibonacci(n)%2==0]
fib_even=sum(fib_list)
print(fib_list)
print(fib_even)

這是我的解決方案:

def fibonacci():
   sequence = [1, 2]
   total = 0

   while sequence[-1] < 4000000:
       if sequence[-1] % 2 == 0:
           total += sequence[-1]
       sequence.append(sequence[-1] + sequence[-2])

   print(total)

對列表中最后一個元素的檢查確保它不會超過 400 萬。 這也是 sgfw 回應的意思。 我不確定你將如何為列表理解實現它——這不是我解決這個問題的第一選擇。

您可以使用內置函數sumfilter

def fib(limit):
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a + b

sum(filter(lambda x: x%2==0, fib(4_000_000)))

輸出:

4613732

fib函數會生成所有的斐波那契數,而filter函數會過濾掉那些不是偶數的數字,最后,內置函數sum會添加所有的偶數

“while”循環可能比列表理解更適合這個問題。 使用帶有條件“break”語句的“while True”循環甚至可能是最簡單的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM