in order to know what it does
Code:
void what(int n, int limit, int* answer, int place){
int i;
if (n > 0)
for (i=min(n,limit); i>0; i--){
answer[place]=i;
answer[place+1]=-1;
what(n-i, i, answer, place+1);
answer[place]=-1;
}
else{
for (i=0; answer[i]!=-1; i++)
printf("%d ", answer[i]);
printf("\n");
}
}