Título: Numero menor recursivo Publicado por: sora_ori en 13 Abril 2015, 21:11 pm Hola compañeros, estoy haciendo un programa recursivo en C que mostrará el número menor de un vector.
De momento esto es lo que he planteado: Código
Un saludo Título: Re: Numero menor recursivo Publicado por: ivancea96 en 13 Abril 2015, 21:34 pm En primer lugar, no puedes acceder a vector[ 100 ]. El máximo es 99.
En segundo lugar, ¿qué es medida? ¿El tamaño del vector? De ser así... ¿Por qué accedes a vector[ 99 ] en la segunda parte del código? Y otra es, que a la función le tendrás que pasar "vector", no "vector[ 100 ]". Título: Re: Numero menor recursivo Publicado por: DarK_FirefoX en 14 Abril 2015, 02:37 am Calcular el menor número de un array(desorganizado) tiene una complejidad temporal de O(n), donde n es el tamaño de la entrada, pues tienes que recorrer el array completo para saber cual es el menor. Haciéndolo recursivo no tendrá menor complejidad temporal, será igual.
Aquí te dejo el código en C# de como lo puedes hacer. Código
La sintaxis de C# es bastante parecida a C, así que dudo que tengas algún problema en entender, de igual manera si lo tienes dilo. Ahora, a la hora de llamar el método, el parametro int minimoInf debe ser igual a 0, y int minimoSup debe ser igual a la longitud del array - 1 (recuerda que si un array tiene 100 elementos, el último índice accesible es el 99) Salu2s, espero poder haberte ayudado Título: Re: Numero menor recursivo Publicado por: sora_ori en 15 Abril 2015, 00:15 am Hola compañeros, ya tengo mejorado el código. Lo que pretendia hacer con la variable "medida" era saber los elementos que habrán en el vector.
Ahora lo verán más claro: Código
Gracias por la ayuda! Título: Re: Numero menor recursivo Publicado por: rir3760 en 16 Abril 2015, 17:10 pm ya tengo mejorado el código. Lo que pretendia hacer con la variable "medida" era saber los elementos que habrán en el vector. Lo primero que debes hacer es evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html). Si lo haces porque utilizas Dev-C++ y este no incluye la característica de pausa automática cambiate a cualquier otro IDE, el mas parecido es Orwell Dev-C++ (http://sourceforge.net/projects/orwelldevcpp/).En el programa utilizas la función "min" la cual es una extensión, otro problema es no darle un valor inicial a la variable "menor_encontrado" con ello este es no definido o "basura". Por ultimo la función no necesita de tres argumentos, con solo dos basta: Código
Otra opción es utilizar una variable auxiliar, con ello se evita el uso de la función "min": Código
Un saludo Título: Re: Numero menor recursivo Publicado por: Blaster en 21 Abril 2015, 02:37 am Por ultimo la función no necesita de tres argumentos, con solo dos basta: rir3760 porque sacrificar rendimiento y velocidad por únicamente ahorrarte un parámetro mas, lo digo porque esta linea Código
Se convierte en Código
Como se puede ver , valormenor se llama dos veces, esas dos llamadas hacen cuatro llamadas que a su ves estas realizan otras ocho llamadas y así sucesivamente, por lo esto tendrá una directa incidencia en la velocidad de la función, esto puede notarse si el array es de una tamaño mayor Un saludo Título: Re: Numero menor recursivo Publicado por: rir3760 en 21 Abril 2015, 03:39 am rir3760 porque sacrificar rendimiento y velocidad por únicamente ahorrarte un parámetro mas Cierto si se trata de una macro. Yo asumo (por sentido común, nada mas) que es una función y en ese caso no hay problema pero seria mejor que el OP (me refiero a sora_ori ) nos indicara que es esa bendita extensión.En el caso de que exista una macro con ese nombre como bien comentas se presentarían problemas como las llamadas múltiples, en ese escenario basta con colocar "min" entre paréntesis para así evitar la macro y terminar con una llamada a función. Pero, de nuevo, considerar a "min" como una función solo fue una educated guess. Un saludo |