在Java中,可以使用遞歸的方法來輸出數組的所有子集。以下是一個示例代碼:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Subsets {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
List<List<Integer>> result = subsets(nums);
System.out.println(result);
}
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
backtrack(result, new ArrayList<>(), nums, 0);
return result;
}
private static void backtrack(List<List<Integer>> result, List<Integer> tempList, int[] nums, int start) {
result.add(new ArrayList<>(tempList));
for (int i = start; i < nums.length; i++) {
tempList.add(nums[i]);
backtrack(result, tempList, nums, i + 1);
tempList.remove(tempList.size() - 1);
}
}
}
在這個示例中,subsets
函數接收一個整數數組nums
作為輸入,然后調用backtrack
函數來生成所有子集。backtrack
函數使用遞歸的方式遍歷數組的每個元素,并將其添加到臨時列表tempList
中。當遍歷到數組的末尾時,將當前的tempList
添加到結果列表result
中。最后,返回結果列表result
。