>>36 for文も使ってある
#include <stdio.h>

void hoge(int *count, int result[], int left_num, int min_num, int rest){
int i;

if(rest<=1)
{
result[0]=left_num;
for(i=0;i<7;i++) printf(" %d", result[i]);
printf("\n");
*count+=1;
return;
}

for(i=min_num;i<=left_num/rest;i++)
{
result[rest-1]=i;
hoge(count, result, left_num-i, i, rest-1);
}
}

int huga(void){
int count=0, result[7];

hoge(&count, result, 15, 1, 7);
return count;
}

int main(void){
printf("%d\n", huga());
}