Celem programu jest wygenerowanie wszystkich podzbiorów k-elementowych zbioru liczb od 1 do n. Tylko, że gdzieś tutaj jest błąd, bo program nie działa do końca prawidłowo. Może mi ktoś wskazać co tu jest nie tak?
#include <stdio.h>
void rekurencja(int p, int S[], int k, int m)
{
if (k==0)
{
int i;
for(i=0; i<m; i++)
{
printf("%d", S[i]-1);
}
printf("\n");
}
else {
if(p==0) return;
S[k-1]=p;
rekurencja(p-1, S, k-1, m);
rekurencja(p-1, S, k, m);
}
}
void podzbiory(int n, int k)
{
int S[k]; rekurencja(n,S,k,k);
}
main() {
printf("Podaj ostatnia liczbe zbioru: ");
int n;
scanf("%d" , &n);
printf("Podaj ilu elementowe maja byc podzbiory: ");
int k;
scanf("%d" , &k);
podzbiory(n,k);
}