To prevent using the same element in different orders, which would create duplicate combinations, it is common to pass a start index to a recursive call, implementing a strategy that one can could call backtracking with pruning or index based recursion.
While the recursive part of the problem ensures the problem is broken down into smaller pieces until a base case is found, the start index ensures you don’t process previous elements at the current level of recursion. This is akin to partitioning the array into sections where each recursion branch works on a distinct part of the array.