1. 程式人生 > >演算法設計之Project Euler 02:Even Fibonacci numbers

演算法設計之Project Euler 02:Even Fibonacci numbers

一、問題

Even Fibonacci numbers:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

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

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

二、問題描述

Fibonacci數列中的每一項都是由前兩項累加得到的,前兩項分別為1和2,由此可以得到Fibonacci數列的前10項。

如果一個Fibonacci數列中的所有數都不超過4000000,對這個數列中偶數值的項進行求和。

答案為:4613732

三、第一遍刷Project Euler

思路:將所有的Fibonacci數列儲存,然後對其偶數值的項進行求和。

python版本程式碼:

# 求Fibonacci數列的函式
def Fibonacci(n):
    if (n==1):
        return 1
    elif (n==2):
        return 2
    else:
        return Fibonacci(n-1) + Fibonacci(n-2)


# 對偶數值的項求和
def main(max_num):
    # 找到小於max_num的所有Fibonacci數列
    result = [1,2]
    for i in range(3, max_num):
        result.append(Fibonacci(i))
        if Fibonacci(i) > max_num:
            result.pop(-1)
            break

    # 累加偶數值的項
    count = 0
    for value in result:
        if value%2==0:
            count += values
    print(count)


# 執行程式
if __name__=="__main__":
    main(4000000)