Combination Sum (LC-0039)

class Solution:
    def combinationSum(self, candidates, target):
        def rec(sx, arr, curr, res, csum, tgt):
            if sx >= len(arr):
                return
            elif csum >= target:
                if csum == target:
                    res.append(curr.copy())
                return
            
            curr.append(arr[sx])
            rec(sx, arr, curr, res, csum + arr[sx], tgt)
            curr.pop()
            rec(1 + sx, arr, curr, res, csum, tgt)
        
        result = []
        rec(0, candidates, [], result, 0, target)
        return result