PI-ITBA / 2024_01

8 stars 0 forks source link

ejercicios de recursividad #375

Closed mholgadoo closed 3 months ago

mholgadoo commented 3 months ago

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);
}
*
marcelogarberoglio commented 3 months ago

sumMatrch está bien recursiva es el ejercicio 3 del tp 10, fijate si pasa el test las últimas dos están bien