Ускорить рекурсивную функцию с тремя вызовами

MediumAlgo
05:00
Лучше работает на десктопе
Dynamic ProgrammingRecurrenceTribonacciMatrix Exponentiationreal-interview
Реальный собес00:15:03-00:22:062026-05-08 14-02-49Страница собеса
Кадр с условием задачи 1
Кроп кадра с собеседования

На собеседовании дана рекурсивная функция:

def g(n):
    if n < 3:
        return 1
    return g(n - 1) + g(n - 2) + g(n - 3)

Сначала нужно оценить сложность такой реализации, а затем переписать функцию так, чтобы она возвращала тот же ответ, но работала быстрее.

Сигнатура

def g_fast(n: int) -> int:

Пример

g_fast(10) -> 193

Follow-up с собеседования: как считать такие значения быстрее, чем за O(n), если n очень большое?

Примеры

Пример 1

Вход:
n = 0
Выход:1

Базовый случай n=0

Пример 2

Вход:
n = 2
Выход:1

Базовый случай n=2

Пример 3

Вход:
n = 3
Выход:3

Первое рекурсивное значение

Консоль
Нажмите Run или Ctrl+Enter для запуска