public static void main(String[] args) { List<List<Integer>> list = m1(new int[]{1, 2, 3}); System.out.println(""); } public static List<List<Integer>> m1(int nums[]) { List<List<Integer>> ret = new ArrayList<>(); if (nums.length == 1) { List<Integer> tmp = new ArrayList<>(); tmp.add(nums[0]); ret.add(tmp); return ret; } for (int i = 0; i < nums.length; i++) { int newInt[] = new int[nums.length - 1]; int newIndex = 0; for (int j = 0; j < nums.length; j++) { if (j != i) { newInt[newIndex] = nums[j]; newIndex++; } } List<List<Integer>> ret1 = m1(newInt); for (List<Integer> item : ret1) { item.add(0, nums[i]); ret.add(item); } } return ret; }