Представление числа в виде суммы чисел Люка, программа работает неправильно

Рейтинг: 1Ответов: 0Опубликовано: 04.02.2023
# Эта программа получает на входе натуральное число 
# и выдаёт представление этого числа в виде суммы 
# чисел Люка, используя жадный алгоритм.

def lucas_sum(n):
    if n == 0:
        return 2
    elif n == 1:
        return 1
    else:
        luc = [2, 1]
        while luc[-1] <= n:
            luc.append(luc[-1] + luc[-2])
        result = []
        for i in range(len(luc)-1, -1, -1):
            if luc[i] <= n:
                result.append(luc[i])
                n -= luc[i]
        return result

number = int(input("Enter a natural number: "))
print(lucas_sum(number))

Для достаточно больших чисел программа работает не так уж и плохо. Например, получив на входе число 2023, она выдаёт: [1364, 521, 123, 11, 4], что в полной мере соответствует действительности. Однако если ввести, скажем, число 2, на выходе, увы, получается: [1].

Как можно исправить эту программу, дабы она работала правильно?

Заранее благодарю за ответ.

Ответы

Ответов пока нет.