Que tal, estoy teniendo un problema con una función recursiva, estoy tratando de implementar backtracking (generar un arbol con posibles soluciones mediante recursividad) pero al salir de la funcion recursiva (mediante la condición de paro) y regresar al punto posterior a la llamada recursiva, regresa con los valores generados posterior a la llamada recursiva, y no con los valores anteriores a la llamada recursiva. Entonces no sé como trabaje C con las variables que se van generando en cada llamada recursiva, y cómo las maneja al regresar al punto donde la función termina. Te dejo mi función la cual debe ir concatenando un string con '0' o '1', en un principio el string está vacío y la condición de paro es que el string alcance el tamaño n, saludos y gracias int getMax(char string[], objeto datos[], int n, int c){ if(strlen(string) == n){ return getBeneficio(string, datos, n ,c); } else{ int max0 = getMax(strcat(string, "0"), datos, n, c ); //aqui deberia entrar de nuevo con la variable string vacia int max1 = getMax(strcat(string, "1"), datos, n, c ); return max(max0, max1); } }
@charly-ic2dd6 жыл бұрын
xq no hace falta el else?? en el if min 3:45
@DuarteCorporationTutoriales6 жыл бұрын
porque no hace falta, tu mismo te respondes, si se necesitara se utilizaría, debes de saber para qué sirve el ELSE y así no tendrás más esa duda
@charly-ic2dd6 жыл бұрын
no me quedo muy claro, la linea 7 se ejecuta siempre pase lo q pase en el if(linea 5 y 6)?? gracias por responder!
@faingtoku6 жыл бұрын
Recuerda que el return te saca de la función, si entras al if te devuelve 1 y termina la función y con el otro estas retornando a la función sin necesidad de un else.