YOU’RE LEARNING TO↗write recursive solutions with correct base cases
↗apply memoization using functools.lru_cache to eliminate redundant computation
↗convert a top-down memoized solution to bottom-up tabulation
↗solve classic DP problems: Fibonacci, coin change, and longest common subsequence
↗implement backtracking to generate all permutations and subsets
↗identify when recursion is inappropriate (deep stacks) and use iteration instead