Есть задание:
Каждый новый элемент последовательности Фибоначчи получается сложением предыдущих двух. Начиная с 1 и 2, получаем первые 10 элементов: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … Найдите сумму всех четных элементов последовательности Фибоначчи, порядковый номер которых меньше A и верните из функции сумму всех ее цифр.
Пример: A = 10
Ряд Фибоначчи: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Четные элементы: 2, 8, 34
Их сумма: 44, а сумма всех ее чисел - 8.
Вот мой код.Использую алгоритм с мемоизацией:
# function that find sum of digits at number
def sum_of_digits(n):
r = 0
while n:
r, n = r + n % 10, n // 10
return r
# function that find sum of even numbers in fibonacci sequence
def solution(A):
total_sum = 0
a = 1
b = 1
for i in range(0, A):
if a % 2 == 0:
total_sum += a
temporary = a
a = b
b += temporary
return sum_of_digits(total_sum)
Код успешно проходит все тесты, однако выходит за рамки рекомендуемого времени
выполнения.В связи с этим вопрос: как оптимизировать данный алгоритм или подобрать более
оптимальный?
Задание взято
отсюда.
P.s На Python пишу впервые в жизни, так что простите , если нарушил
Code Conventions:)