Dev - C++ - Funcion recursiva en C

 
Vista:

Funcion recursiva en C

Publicado por Pepe (21 intervenciones) el 11/11/2020 20:09:50
Hola, quiero realizar una función recursiva que me cuente el total de sonidos que son iguales en un video, pero cuando hago la recursividad se me machaca el contador, imagino que se me escapa algo, pero por más vueltas que le doy no lo veo.

Si alguien me puede echar una mano se lo agradecería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int contar_sonidos(tFavoriteStack *stack, tSound *sound){
 
    int contador=0;
    tFavorite *favo;
    tFavoriteStack *stackcopia;
    stackcopia = (tFavoriteStack*)malloc(sizeof(tFavoriteStack));
 
 
    if (favoriteStack_empty(*stack)){
        return 0;
    }
    else {
 
            favoriteStack_duplicate(stackcopia,*stack);
            favo = favoriteStack_pop(stackcopia);
 
            contar_sonidos(stackcopia,favo->video.sound);
 
                if (favo->video.sound != NULL && sound != NULL) {
                    if (strcmp(sound->name, favo->video.sound->name) == 0) {
                        contador++;
                    }
                }
        return contador;
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Funcion recursiva en C

Publicado por Rodrigo (539 intervenciones) el 11/11/2020 20:47:29
Sugiero indicar a que te refieres con "se me machaca el contador"
Cual es la entrada? Cual es el valor que esperas? Que obtienes?

Por otro lado, cuando invocas la funcion recursivamente no estas capturando ni usando el valor que la funcion te retorna.
No deberias usarlo para algo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcion recursiva en C

Publicado por Pepe (21 intervenciones) el 12/11/2020 07:41:35
Recibo una pila de videos (los cuales llevan un sonido, o no) y un sonido, lo que quiero hacer es recorrer los videos de ese usuario para comparar el sonido que me pasan como parametro y cuando lo encuentre contarlo, para que la funcion devuelva el total de veces que aparece el sonido en los videos de la pila.

Si hago un prinf dentro del if que me aumenta el contador, me salen 2 sonidos iguales, pero imagino que cuando hace la recursividad al pasar por el contador=0; me machaca el contador que ya tenia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Funcion recursiva en C

Publicado por Rodrigo (539 intervenciones) el 12/11/2020 08:04:41
No veo como el contador podria llegar a 2 con el codigo que presentas.
Si parte en 0 y solo hay un contador++, que no esta dentro de un ciclo, como puede llegar a 2?
Tengo la impresion que estas hablando de otro codigo, no del que estas mostrando aqui?

Asignale a contador la invocacion recursiva

1
contador = contar_sonidos(stackcopia,favo->video.sound);

dejando el resto igual y ve si el resultado es el que esperas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar