Currently, I've been reading about Dynamic Programming in this book and I don't really see the difference between bottom-up dynamic programming and top-down dynamic programming. It seems like both of these techniques do the same thing - compute, save, and finally check to avoid needless recomputation. Any tips??