Форум » Динамическое программирование » 5788 » Ответить

5788

Ar3turrr: Не могу найти ошибку. [pre2]from functools import lru_cache @lru_cache def F(x, y, n, m): if x < n: return F(x + 1, y, n, m) + F(x * 2, y, n, m) if y < m: return F(x, y + 3, n, m) if x == n and y == m: return 1 else: return 0 print(F(1, 0, 17, 27))[/pre2]

Ответов - 2

MrAndrewson: Неверно рекурсию используете. Из каждой точки возможно три варианта хода. [pre2]from functools import cache @cache def F(x, y, n, m): if x > n or y > m: return 0 if x == n and y == m: return 1 return F(x + 1, y, n, m) + F(x * 2, y, n, m) + F(x, y + 3, n, m) print(F(1, 0, 17, 27)) [/pre2]

Ar3turrr: MrAndrewson пишет: from functools import cache Почему вы используете просто cache вместо lru_cache? Это то же самое? Почему нужно не ставить какого-либо условия, а просто вставить return в конце?



полная версия страницы