If the recursive call keeps calculating the same things over and over again, we can use _______ which stores partial results already calculated and to be used again.
Show Hint
For problems with overlapping subproblems, dynamic programming is often the best approach to avoid redundant calculations.
Dynamic programming stores partial results to avoid recalculating the same values multiple times. This technique is especially useful in problems like the Fibonacci sequence, where overlapping subproblems can be solved more efficiently by saving results. Divide and conquer algorithms also solve subproblems but do not typically store intermediate results.