Using Recursion algorithms. Starts at the final case and then gradually achieves the values for the base case. memoizing means to store the result of a function into another function call
Fibonacci Sequence Top-down approach
// Pseudocode example for top-down
memo = hashmap
Function F(integer i):
if i is 0 or 1:
return i
if i doesn't exist in memo:
memo[i] = F(i - 1) + F(i - 2)
return memo[i]