input: def knapSack(W: int, wt: List[int], val: List[int], n: int) -> int:
      """Find the optimal solution to the 0-1 Knapsack problem using a recursive approach.
      Given a knapsack with capacity W, a list of item weights (wt), and a list of item values (val), 
      this function returns the maximum value that can be obtained without exceeding the knapsack's capacity.
      >>> knapSack(50, [10, 20, 30], [60, 100, 120], 3)
      220
      >>> knapSack(10, [5, 4, 6, 3], [10, 40, 30, 50], 4)
      90
      """
output:     
      if n == 0 or W == 0:
          return 0
      
      if wt[n-1] > W:
          return knapSack(W, wt, val, n-1)
      else:
          return max(val[n-1] + knapSack(W-wt[n-1], wt, val, n-1), knapSack(W, wt, val, n-1))
  