input: Write a function to find all possible combinations of basket items without exceeding the basket limit.
  assert find_basket_combinations([1, 2, 3, 4, 5], 5) == [[], [1], [1, 2], [1, 2, 3], [1, 3], [1, 4], [1, 5], [2], [2, 3], [2, 4], [3], [3, 4], [4], [5]]
  assert find_basket_combinations([2, 3, 6, 7], 7) == [[], [2], [2, 3], [3], [6], [7]]
  assert find_basket_combinations([2, 3, 5], 8) == [[], [2], [2, 3], [2, 5], [3], [3, 5], [5]]
output: def find_basket_combinations(items, limit):
      def backtrack(start, path, total):
          if total <= limit:
              result.append(path[:])
          for i in range(start, len(items)):
              if total + items[i] > limit:
                  continue
              path.append(items[i])
              backtrack(i + 1, path, total + items[i])
              path.pop()
  
      result = []
      backtrack(0, [], 0)
      return result