muigai unaka
Week 5
In general, recursion should be used when it produces a cleaner, more expressive solution compared to the iterative solution. Also, be sure that an excessive number of recursive calls will either not occur, or not lead to performance issues such as stack overflow.
Dynamic Programming requires you break down an optimization problem into simpler sub-problems, and store the solution to each sub-problem so that each sub-problem is only solved once
Problems that seek the maximum or minimum solution given certain constraints. Dynamic Programming looks through all possible sub-problems and never recomputes the solution to any sub-problem.