Saudações amigos, estou com dificuldade em fazer um código recursivo em C. Basicamente o algorítimo pega um vetor e faz as combinações entre os valores desse vetor.
Um exemplo de um vetor de 3 posições {0,1,2}, sua combinação seria a={0,1} b={0,2} e c={1,2}.
Tenho um código que printa essas combinações, segue abaixo:
void comb(int v[],int n){
int i,j;
for(i=0;i<n-1;i++){
for(j=i+1,j<n;j++) printf("%d %d \n",v[i],v[j]);
}
}
Como ficaria ele recursivo? Visto que ao variar n, é acrescentado mais um for dentro do segundo loop, veja um exemplo com 3 posições:
void comb(int v[],int n){
int i,j,k;
for(i=0;i<n-2;i++){
for(j=i+1,j<n-1;j++){
for(k=j+1;k<n;k++) printf("%d %d %d \n",v[i],v[j],v[k]);
}
}
}
Venho quebrando a cabeça a dias e não encontro a solução.
Gostaria de armazenar o resultado das combinações em outro vetor, minha ideia foi pra algo nesse sentido:
int *combR(int v[],int n,int k){
int i,*r;
r=("função Recursiva");
return r;
}
//k = posição da combinação. Ex: k=0 {0,1,2}, k=1 {0,1,3} k=2 {0,2,3}....