Use backtracking, but allow reusing the same number. After adding a candidate, recurse with the same start index (not start+1).
Base case: if the current sum equals target, add the combination to results. If sum exceeds target, stop that branch.
Recursive case: for each candidate from the start index onward, add it to the current combination, recurse with the same start, then backtrack.