Can anyone please explain what will be the output of the given below recursive function.
Please explain it in very detail with recursion tree.
set of vectors P.
void f(set S,vector v){
if(S is empty){
insert v into P;
return;
}
for(i = n to 1){
if(i in S){
v.push_at_back(i);
//append
f(S\{i},v);//S\{i} is S after removing i
v.pop_from_back();
//erase last element
}
}
}