input: Write a python function to find the minimum number of coins needed to make a given change using recursion.
  assert get_coins([1, 6, 10], 8) == [6, 1, 1]
  assert get_coins([1, 5, 10, 25], 30) == [25, 5]
  assert get_coins([1, 2, 5], 11) == [5, 5, 1]
output: def get_coins(coins, amount):
      def helper(coins, amount, memo):
          if amount in memo:
              return memo[amount]
          if amount == 0:
              return []
          if amount < 0:
              return None
          min_coins = None
          for coin in coins:
              result = helper(coins, amount - coin, memo)
              if result is not None:
                  if min_coins is None or len(result) < len(min_coins):
                      min_coins = result + [coin]
          memo[amount] = min_coins
          return min_coins
      
      memo = {}
      return helper(coins, amount, memo)