me gustaria saber si estos ejercicios estan bien resueltos
*
/*escribir una función recursiva sumMatch que reciba
como único parametro un vector de enteros mayores o
iguales a cero, donde la marca de final es un numero negativo.
La funcion debe retornar cero si los elementos del vector
están "apareados por sumas", y distinto de cero si no.*/
int sumMatch(int vec[]){
if (vec[0] < 0){
return 0;
}
int aux = sumMatch(vec + 1);
if(aux < 0){
return aux;
}
if (aux == 0){
return v[0];
}
return aux - vec[0];
}
//escribir una funcion recursiva que dada una lista de enteros que deberia estar ordenada
//en forma ascendente, elimine de la misma los elementos que no cumplan con ese orden
TList recursiva(TList l){
if (l == NULL || l->tail == NULL)
return l;
if (l->elem >= l->tail->elem){
//elimino el siguiente con el if de arriba me aseguro de que l->tail es distinto de null
TList aux = l->tail;
l->tail = recursiva(l->tail->tail);
free(aux); //libero el nodo "del medio" y paso al siguiente. Ejemplo 10 9 12. 10->tail = 9->tail = 12 y free 9. lista = 10 -> 12
return l;
}
l->tail = recursiva(l->tail);
return l;
}
//escribir una funcion recursiva que, recibiendo una lista y un caracter, retorne cuantos grupos de ese caracter aparecen.
ejemplo: caracter = a, lista = aaabrasdffa NULL. Retorna 3
int countGroups(TList l, char c){
if (l == NULL){
return 0;
}
if ( (l->tail == NULL && l->elem == c) || (l->elem == c && l->tail->elem != c)){
return 1 + countGroups(l->tail, c);
}
return countGroups(l->tail, c);
}
//mismo ejercicio pero con strings
int contarGrupos(char * s, char c){
if (s[0] == 0){
return 0;
}
if (s[0] == c && s[1] != c){
return 1 + contarGrupos(s + 1, c);
}
return contarGrupos(s + 1, c);
}
*
me gustaria saber si estos ejercicios estan bien resueltos