Same recurrence, two orders
Top-down recurses from the goal down to the base with a cache. Bottom-up starts at the base and fills up. Both are the same set of equations.
Bottom-up is stack-safe
When n is large, bottom-up avoids the recursion limit entirely. That is the reason competitive code often prefers it.