Почему программа работает только пока c не превысит (a+b)^3?

Рейтинг: -1Ответов: 1Опубликовано: 16.04.2023

Задача: Напишите программу, которая из двух заданных натуральных чисел a и b создаст список, содержащий элементы 𝑐, являющиеся элементами последовательности Фибоначчи, по алгоритму:

c = a + b 
a = b
b = c 

пока c не превысит (a+b)^3, затем вернет сумму всех элементов созданного списка. Например: Для a=2, b=4 он вернет список символов [6, 10, 16, 26, 42, 68, 110, 178] и сумму 456.

Мой код:

a, b = 2, 4
L = []
c = 0
while c != (a + b) ** 3:
        c = a + b
        a = b
        b = c
        L.append(c)
print(L)
print(sum(L))

Мне нужно, чтобы он выдавал [6, 10, 16, 26, 42, 68, 110, 178] и сумму 456, но он даже не компилируется.

Ответы

▲ 2Принят

Судя по примеру, вам нужно запомнить начальные значения a,b и сравнивать с с кубом их суммы.

И "пока не превысит" не означает, что нужно ловить строгое равенство.

t = (a + b) ** 3
c = a + b
while c <= t:
    L.append(c)
    a = b
    b = c
    c = a + b