又成一道新知。
public class Solution {
public List<List<Integer>> getFactors(int n) {
List<List<Integer>> results = new LinkedList<>();
List<Integer> list = new LinkedList<>();
getFactorsHelper(n, results, list, 0);
return results;
}
private void getFactorsHelper(int n, List<List<Integer>> results, List<Integer> list, int last){
for (int i = 2; i < n; i++) {
if (n / i >= i && i >= last && n % i == 0) {
list.add(i);
list.add(n / i);
results.add(new LinkedList<>(list));
list.remove(list.size() - 1);
getFactorsHelper(n / i, results, list, i);
list.remove(list.size() - 1);
}
}
}
}