Same subproblems solved repeatedly in naive recursion. DP solves each exactly once. Memoization (top-down) caches results; Tabulation (bottom-up) fills a table iteratively.