Задача 1️⃣ — прямая рекурсия def F(n): if n == 1: return 1 # база: F(1) = 1 if n % 2 == 0: return n + F(n-1) # если n чётное: F(n) = n + F(n-1) return 2 * F(n-2) # если n нечётное и n > 1: F(n) = 2×F(n-2) print(F(24)) # ответ: 2072 Метод: обычная рекурсия — функция вызывает саму себя напрямую, значения не кешируются. Задача 2️⃣ — рекурсия с увеличением лимита стека import sys sys.setrecursionlimit(250000) # увеличиваем лимит глубины рекурсии (по умолчанию 1000) def F(n): if n < 10: return 1 # база: F(n) = 1 при n < 10 return (n + 3) * F(n-3) # рекуррентность: F(n) = (n+3) × F(n-3) print((F(247563)//519 - 477 * F(247560)) / F(247557)) # ответ: 1431 Метод: рекурсия с принудительным увеличением лимита стека — нужно, так как глубина вызовов ~82000. Задача 3️⃣ — рекурсия с кешированием (lru_cache) from functools import * @lru_cache() # декоратор кеширует результаты — каждое значение считается один раз def G(n): if n >= 250000: re
❤️Пока вы набираете лайки, делюсь кодами для решения сегодняшних задач
25 мая25 мая
1 мин