Is dynamic programming just memoised recursion with extra steps?
Every dynamic programming problem I have solved, I first solved as a recursion with a cache, and the answer came out identical. The tabulated version then felt like rewriting working code backwards to satisfy a convention.
Is there a real difference, or is the bottom up form just a style preference?