Top down DP is dangerouseasy to implementtop down without memoization would result in exponential time (duplicated)