A recursive solution contains a small number of distinct subproblems repeated many times
Memoization
Storing in table to avoid redoing work.
Overlapping subproblems
In computer science, a problem is said to have overlapping subproblems if the problem can be broken down into subproblems which are reused several times or a recursive algorithm for the problem solves the same subproblem over and over rather than always generating new subproblems.[1][2]
[3]
https://en.wikipedia.org/wiki/Overlapping_subproblems

Seonglae Cho