#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int n=6;
int k=4;
void podzbiory(int K[], int k)
{
int g,b;
for(int z=1;;z++)
{
for(int i=0;i<=k-1;i++)
{
int a=0;
for(int j=0;j<=k-1;j++)
{
if((K[i]+1)!=K[j]) a++;
}
if(a==k)
{
b=i;
break;
}
}
if(K[b]==n) break;
K[b]=K[b]+1;
for(g=0;g<=b-1;g++)
{
if(K[g]<K[b]) K[g]=g+1;
}
printf("{");
for(g=0;g<=k-1;g++)
{
printf("%d", K[g]);
if(g==(k-1)) break;
printf(",");
}
printf("}\n");
}
}
int main()
{
int K[k];
printf("{");
for(int a=0;a<k;a++)
{
K[a]=a+1;
printf("%d", K[a]);
if(a+1==k) break;
printf(",");
}
printf("}\n");
podzbiory(K, k);
}
Jest to program wypisujący wszystkie k-elementowe podzbiory zbioru od 1 do n. Da się to jakoś łatwo przekształcić na rekurencję? Nie cierpie tych rekurencji dlatego zrobiłem to w taki sposób, rekurencją pewnie dałoby się 100 razy prościej.