Это функция для поиска подмножеств данного массива. Используемая здесь рекурсия очень запутанная. Не могли бы вы объяснить все рекурсивные вызовы?
private void findAll(List<List<Integer>> result, int[] nums, List<Integer> subset, int start) {
result.add(new ArrayList<>(subset));
for (int i = start; i < nums.length; i++) {
subset.add(nums[i]);
findAll(result, nums, subset, i + 1);
subset.remove(subset.size() - 1);
}