Итак, алгоритм генерирует подмножества множества A, используя параметр i для ссылки на A [i], на каждом шаге происходит два вызова, один из которых включает A [i], а другой исключает A [i].Поиск останавливается, когда я == n.
Итак, это имеет смысл, но я не могу понять, что здесь делает последнее утверждение ..
void search(int i, ArrayList<Integer> subset,ArrayList<Integer> A, int n){
if (i==n) System.out.println(subset);
else{
search(i+1,subset,A,n);
subset.add(A.get(i));
search(i+1,subset,A,n);
subset.remove(subset.size()-1); /*Why do we need to do this? I am not making any function call after this*/
}
}
Я пытался исключить последнее утверждение, нозатем он повторяет элементы в подмножествах.Какая польза от последнего утверждения?