I tried to convert the below Java code into C#. The Java code works fine but C# code is not returning the powersets. Am I missing something?
Java Code
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
List<List<Integer>> subsets = new ArrayList<>();
System.out.println(generateSubsets(
0,
list.stream().mapToInt(i -> i).toArray(),
new ArrayList<Integer>(),
subsets));
}
static List<List<Integer>> generateSubsets(
int index,
int[] nums,
List<Integer> current,
List<List<Integer>> subsets){
subsets.add(new ArrayList<>(current));
for(int i = index; i < nums.length; i++){
current.add(nums[i]);
generateSubsets(i + 1, nums,current, subsets);
current.remove(current.size() - 1);
}
return subsets;
}
C# Code
static List<List<Integer>> generateSubsets(
int index,
int[] nums,
List<Integer> current,
List<List<Integer>> subsets) {
subsets.add(new List(current));
for (int i = index; (i < nums.length); i++) {
current.add(nums[i]);
generateSubsets((i + 1), nums, current, subsets);
current.remove((current.size() - 1));
}
return subsets;
}
Expected Output
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]