Prosta rekurencja w C- Kombinacje bez powtórzeń

0

Treść zad: Napisz procedure która generuje wszystkie podzbiory k-elementowe zbioru liczb od 1 do n (drukuje podzbiory na ekranie).

Mam program ale po skompilowaniu i podaniu zmiennych wyskakuje błąd: Segmentation fault (core dumped) (pracuje w C na Linuxie).
Pomóżcie znaleźć błąd.

 
#include <stdio.h>
int gen(int level, int k, int n, int* tab)
{
  if(level > k)
  {
      for(int i=1; i<=k; ++i)       
 printf("%d ", tab[i]);
  }
  else
  {
   for(int i=tab[level-1]+1; i<n; ++i)
   {
     tab[level] = i;
     gen(level+1, k, n, tab);
   }
  }
}
 
int main()
{
 int n,k; int *tab;

printf("podaj n");
scanf("%d",&n);

printf("podaj k");
scanf("%d",&k);

tab[n+1];

 gen(1, k, n, tab);
}
0

Gdzie warunek zakonczenia rekurencji?

0

Mógłbyś napisać jak ten warunek ma wyglądać i w którym miejscu go wstawić , czy wystarczy samo return 0 na końcu funkcji lub całego programu ?

0

Nie przedzieliłeś pamięci pod tablicę. To tab[n+1]; jest odwołaniem do elementu poza tablicą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1