Dynamic Programming Applications, It is mainly an optimization over plain recursion.