Вопрос по 16 заданию егэ

Задание описано в картинке

Я написал такой код и не могу разобраться в чем ошибка(программа не выдает ничего)

def f(n):

    if n < 3:
        return 1
    if n > 2:
        if sum([int(i) for i in str(n)]) % 2 == 0:
            return f(n-1) - f(n-2)
        else:
            return f(n-1) + f(n // 2)

print(f(100))

Ответы (2 шт):

Автор решения: CrazyElf

Можно и без привлечения сторонних библиотек, самому простой кэш в функции сделать:

def f(n, d = {}):
    if n in d:
        return d[n]
    res = 1
    if n > 2:
        if sum([int(i) for i in str(n)]) % 2 == 0:
            res = f(n-1) - f(n-2)
        else:
            res = f(n-1) + f(n // 2)
    d[n] = res
    return res

print(f(100))
→ Ссылка
Автор решения: MBo

До кучи нерекурсивный вариант без обсчёта сумм (работает для чисел менее 10000, далее надо логику if усовершенствовать)

def ff(n):
    a = [1]*(n+1)
    even = True
    for i in range(3, n+1):
        if (i%10) or (i%100==0) and (i%1000):
            even = not even
        a[i] = a[i-1] + (-a[i-2] if even else a[i//2])
    return a[n]
→ Ссылка