Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 20 de 21

¿ Iteración o Recurrción ?

  1. #1 ¿ Iteración o Recurrción ? 
    Colaborador HH
    Fecha de ingreso
    Jun 2006
    Ubicación
    Uruguay
    Mensajes
    1.451
    Descargas
    11
    Uploads
    0
    Hola
    Saludos a todos mis compañeros del HH, hoy les vengo con una duda que hace tiempo que tengo sobre programación.

    Como muchas sabrán, soy estudiante de la carrera de ingeniería en computación - y sí, no? xD -
    Entonces.. en nuestros cursos de programación, nos obligan a entregar un trabajo para seguir con el curso, en caso de no entregarlo.. lo perdemos. He avanzado mucho en mi programa ( que ya va en unas 3000 y algo lineas de código ) ( gracias a gondar_f )
    Actualmente para terminarlo me queda un procedimiento..
    Al no entender bien las espcificaciones del proyecto, me fui a leer el news de la facu..
    Me encontre con que en una clase de consulta una profesora habia hecho un pseudocódigo de este procedimiento.
    El dato curioso, es que este procedimiento se hacia de forma recursiva.

    Y.. personalmente.. no me gusta para nada hacer las cosas recursivas.
    A nosotros el manejo de punteros nos los enseñaron de manera recursiva. Pero yo lo hago iterativo ( gracias gondar_f !! u rocks! )
    A mi este procedimiento ya se me ocurrio como resolverlo iterativamente.
    Pero sigo notando que mis profesores insisten en la recursión.

    Entonces.. como confío más en ustedes que en mis profesores les vengo con esta pregunta.

    ¿ Qué es mejor, resolver un problema X iterativamente, o recusivamente ?

    Y bueno.. tal vez la respuesta imediata que se me viene a la mente es: depende.
    Depende de lo que se te haga más fácil.

    Pero mi pregunta va más allá de esto, cuál de las dos prácticas es más recomendable si lo miramos desde el punto de la seguridad de la aplicación, de portavilidad de la aplicación, etc, etc.
    No sé.. tal vez sea indiferente usar un método al otro.. pero la verdad que no tengo idea.
    Tampoco nunca nos han enseñado nada de eso, - es que es el próximo semestre el analisis de algoritmos - pero yo tengo la duda ahora

    Y tal vez alguien tenga alguna respuesta a esta pregunta, o pueda hacer un análisis de esto.

    Desde ya, muchas gracias

    SAludos,
    Cypress
    Louis Armstrong le dice a Ella Fitzgerald
    "take another drink of wine, and maybe you change your mind"
     

  2. #2  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Donde me dejan
    Mensajes
    433
    Descargas
    7
    Uploads
    0
    A mi parecer es mas costoso realizarlo con recursión no? Que conste que soy un novatillo en programación, pero siempre e entendido que la recursividad al utilizarla deja procesos inacavados para luego, alfinal recojer todos los datos, en la iteración simplemente vas añadiendo datos.

    Saludos "opinion de un ignorante" XDDDD
    El mejor maestro es uno mismo, aun que siempre va bien una ayudita
     

  3. #3  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    ¿ Qué es mejor, resolver un problema X iterativamente, o recusivamente ?
    Y bueno.. tal vez la respuesta imediata que se me viene a la mente es: depende.
    Depende de lo que se te haga más fácil.
    Pero mi pregunta va más allá de esto, cuál de las dos prácticas es más recomendable si lo miramos desde el punto de la seguridad de la aplicación, de portavilidad de la aplicación, etc, etc.
    Pregunta muy interesante y que antes o después casi todos nos hacemos.

    Primeramente te voy a decir uno de los grandes motivos porque academicamente insisten tanto con la recursión:
    Desde los años 40 hasta finales de los 70 y principios de los 80 (más o menos hasta la generación de Stalman, Bill Gates, Steve Jobs, Michael Dell... hicieron suya la informática) todas los grandes investigadores y principales artífices de la informática fueron en su mayoría matemáticos y casi todos los demás físicos.

    Se quiera o no esto influyo mucho, y entre otras cosas, a los matemáticos se les enseña una técnica para desmotrar si una teoría es correcta o no, es el método matemático, que además sirve para encontrar nuevas formulas... bien pues la recursividad no es más que una plasmación de esa técnica en la informática... y por ello muchos de los grandes autores cuando plasmaron en sus obras algunos de los algoritmos que aun se usan pues los implmentaron de forma recursiva (por ejemplo el vuelta atras o Backtracking, termino y algoritmo de un "matemático" Lehmer o algo así), eso no quiere decir que no se pueda hacer de forma interactiva, realmente el que suele usarse es el interactivo o vuelta atras interactivo... Y esos textos de esos primeros autores siguen siendo la fuente sobre la que se producen nuevos textos y los que se siguen dando en las facultades.

    Además hay otro motivo academico para que le dean tanta importancia a los algoritmos en su modo recursivo, y es muy simple, usualmente los algoritmos recursivos suelen ser más simples y fáciles de leer que sus equivalente interactivos.

    Existe un último motivo, aunque este no se hasta que punto será cierto, pero tocando este mismo tema me lo comentaron un par de ocasiones, y es el siguiente: normalmente los que aprenden a programar por su cuenta o a través de cursos de programación, pues muy raramente usan tecnicas recursivas, todo lo contrario los titulados universitarios, ya que a lo largo de varios años de carrera se les insitio y obligo a usar algoritmos recursivos, con el tiempo los interiorizan y acaba siendo su forma abitual de resolver problemas... y de ahí que ciertos titulados, para demostrar que lo son e intentar diferenciarse de aficionados o de otros profesionales que no tienen título superior, pues utilizan de forma abitual formas recursivas... Sinceramente yo nunca me tope con esto, pero cuando me lo comentaron varias veces es que puede que sea así en algunos sitios.

    Bien ahora que ya explique el por qué de esa mania con todo lo recursivo toca centrarse en tu pregunta.

    Empezemos por esto:
    ¿ Qué es mejor, resolver un problema X iterativamente, o recusivamente ?
    Pues la respuesta es un depende, interactivamente se pueden resolver todos los problemas, pero en algunas ocasiones la solución recursiva es más simple y lo que ello implica, menos propensa a errores y por encima es más sencilla de leer. También es cierto que en ocasiones que el problemas aparenta se muy complejo si lo miras en su totalidad y en cambio si lo piensas con un tamaño menor ves que el paso de uno a otro se muy sencillo, de ahi que usualmente el método divide y venceras es suele usar de forma recursiva, ya que es la forma de hacer las cosas de forma recursiva.

    Aun así siempre hay que tener en cuenta una cosa, los algoritmos recursivos (sean estos finales o no) requieren mucha más memoria, son mucho más lentos y abusan de la pila. Los recursivos finales eliminan buena parte de estos problemas, pero sus cifras comparadas con el equivalente interactivo son peores...

    Además, muchos lenguajes no permiten la solución de problemas de forma recursiva o no de forma eficiente, aunque también es cierto que otros estan pensados para que los programadores usen formas recursivas...

    Para resumir, como tu bien dices depende, en ciertas circunstancias la solución recursiva o hacerlo recursivamente es más adecuada, realmente la mayoria de las veces que esto será cierto será cuanto se pueda dividir fácilmente en subproblemas estremadamente sencillos (el clásico divide y venceras). En el resto de las veces olvidate de la forma recursiva, la forma interactiva es más fácil de implementar y la mejor solución.

    Pero mi pregunta va más allá de esto, cuál de las dos prácticas es más recomendable si lo miramos desde el punto de la seguridad de la aplicación, de portavilidad de la aplicación, etc, etc.
    Desde el punto de vista de seguridad pues es algo ambiguo, por un lado en algunas ocasiones la forma recursiva genera algoritmos mucho más simples, algo que suele mejorar la seguridad al ser menos propenso a errores y porque es más senillo de leer lo ya hace que sea más sencillo de depurar.
    Pero también se da lo contrario, muchos grandes fallos de seguridad se debieron a que se consiguio romper la pila recursiva de ciertos programas (especilmente famosos los del cierto demonio de correo electronico).

    Pero para finalizar me voy a centrar en un algoritmo en sus 2 formas y te dire lo bueno de uno u otro, para no entrar con otros pues uno ya nombrado antes:
    El vuelta atras o backtracking.
    En su forma recursiva te olvidas de tener que implementar una pila, algo que en su forma interactiva tienes que hacer... claro si usas un lenguaje como Pascal o Modula2 que tienes que implementar manualmente la pila pues puede ser interesante la forma recursiva, además de que evitas tener problemas con la utilización de la pila. Pero en la práctica casi todo el mundo opta por la forma interactiva por que te permite una flexibilidad que no te permite la forma recursiva... además es un algoritmo que se usa usualmente para programas en donde al final acabas teniendo miles de nodos, y ahí esta la gran ventaja interactiva, la forma recursiva requiere mucha más memoria, más procesador y no sería descabellado un desbordamiento de pila en la versión recursiva...

    Espero que toda esta parrafada te haya servido de algo... seguro que hyst te espondrá otro punto de vista, el mio es más de la calle y el suyo el más formal, unido a lo de otros que espongas sus opiniones pues seguramente puedas hacerte una idea...

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    A mi parecer es mas costoso realizarlo con recursión no? Que conste que soy un novatillo en programación, pero siempre e entendido que la recursividad al utilizarla deja procesos inacavados para luego, alfinal recojer todos los datos, en la iteración simplemente vas añadiendo datos.
    Te me has adelantado mientras redactaba (y eso que ni lo revise) ...

    Tienes razón, lo que dices es correcto, aunque la versión recursiva final ya va acumulando el resultado, pero en la práctica el recursivo final es lo que menos se usa.

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
     

  5. #5  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Argentina
    Mensajes
    427
    Descargas
    1
    Uploads
    0
    Muy buena la respuesta de gondar_f pero quisiera agregar algunas cosas a mi critero.
    Tu pregunta si mal no entiendo es que ante la diyuncion de usar un metodo iterativo o uno recursivo te resulta mas facil el recursivo. Bueno yo en un tiempo opinaba como vos cuando estudiaba y me enseñaban pascal y arboles binarios o listas circulares donde la recursion era algo nuevo y tambien penasba que un array era mas facil que una lista.
    La experiencia y como bien dices materias como analisis y diseño de algoritmos me hicieron cambiar de idea.
    Hay estructuras de datos que en si son recursivas. Y cuando trabajes con clases en c++, vas a tener muchas estructuras de datos dando vueltas. A que viene esto que la recursion es una espresion natural en cuanto a la computacion de datos aveces es buena o mala eso lo aprenderas leyendo sobre eficiencia de algoritmos y los metodos de medicion de Big "O".
    Cuando uno mide la complejidad temporal de un programa siempre la mide teoricamente y no con un reloj. Esa medida es espresada en terminos de Big O y en un ejemplo como en las torres de hanoi es mas sencilla de encontrar y mas eficiente de la manera recursiva.
    Redondiando esa opinion se va a cambiar con el tiempo y usasras recursion y te saldra muy facil. lo importante en recursion es tener en claro la condicion de corte y lugo tiene ventajas ya que algunas variables las puedes ir manteniendo o no mientras se mueve la pila.
    Te recomiendo que consigas el liro "estructuras de datos y algoritmos" de Aho, Hopcroft y Ullman. Es viejisimo imaginate que dice que el mejor lengiaje orientado a clases de la epoca es pascal cuando hoy se considera solo un lenguaje estructurado y se utiliza c++ para el uso de clases. Pero la base no cambia hay mucho algoritmos estan las estructuras de datos recursivas como los odiados grafos y sus famosos algoritmos djkstra, dept first search, kruskal y otros mas. Y ademas la base de calculo de complejiadad temporal.
    En cuanto a que seguro en tu catedra de analisis de algoritmos empezaras con c++ Te dire algo que todos quisas me discutan pero el libro de dennis ritchie es muy muy viejo y desactualizada para empezar el dia de hoy busca el de stroustrup. Ya se que uno es de c y otro de c++ y que no es lo mismo pero como la mayoria lo confunde y mayoria me refiero a profesores y preofesionales hacen un lenguaje medio donde usan las clases de c++ y el scanf() no ensenan flujos no ensenan templates ni nada que anque son mas dificiles al principio luego el paradigma nos resulta mas sensillos.
    bueno no espero servirte y recuerda en resumen usar recursion o iteracion no depende del gusto del programador sino del tipo de problema de la estructura de datos a usar del lengiaje para codificar (no es lo mismo java que anssambler) y de la compejidad temporal que arrojan las distintas soluciones.
    salu2 y suerte!
    <<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>
    No llores porque termino, sonrie porque sucedio-.
     

  6. #6  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Cita Iniciado por Markitos1024 Ver mensaje
    la mayoria lo confunde y mayoria me refiero a profesores y preofesionales hacen un lenguaje medio donde usan las clases de c++ y el scanf()
    Eso es totalmente cierto.

    Yo, para C++ recomiendo "Accelerated C++"

    Más concretamente esta lista:
    http://rudbek.com/books.html

    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
     

  7. #7  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    pero como la mayoria lo confunde y mayoria me refiero a profesores y preofesionales hacen un lenguaje medio
    Estoy de acuerdo contigo markitos y con j8, la gente se confunde, aunque hasta cierto punto es justificable ya que el C++ es una evolución del C e incluso el Ansi C se vio muy influido por el C++ que en ese momento parecia que se iva a comer el mundo...

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
     

  8. #8  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Donde me dejan
    Mensajes
    433
    Descargas
    7
    Uploads
    0
    gondar_f supongo que me adelante por mi poca idea sobre el tema XD, es que empiezas a escribir y te pierdes dandole al teclado, cuantos teclados gastas al año? Espero que no sea como yo con los bolis.

    Por cierto magnifica explicación de todos.

    Saludos
    El mejor maestro es uno mismo, aun que siempre va bien una ayudita
     

  9. #9  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    gondar_f supongo que me adelante por mi poca idea sobre el tema XD
    pues lo que escribiste estaba muy bien

    es que empiezas a escribir y te pierdes dandole al teclado, cuantos teclados gastas al año?
    pues últimamente me contengo porque tengo mucho menos tiempo y tengo que resumir demasiado...

    Es una verguenza la mala calidad de los teclados actuales, menos mal que compro de los varateiros que si no me iva a gastar una pasta al final del año, josu que lo compras y un par de meses después alguna de las teclas ya se queda enganchada, se te suelta, no funciona... que diferencia con unos teclados optomecanicos que había hace unos años, eran algo caros pero sabias que tenias teclado por lo menos por el tiempo que durase la garantía.

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
     

  10. #10 ¿Nivel de recursión de Java en Applet? 
    Iniciado
    Fecha de ingreso
    Jun 2008
    Mensajes
    2
    Descargas
    0
    Uploads
    0
    Hola. Me gustaría saber el nivel de recursión de Java. Es decir, cuantas veces puede llamarse así mismo hasta agotar la pila? ¿De que depende ese tamaño de pila, de Windows (Sistema operativo) o del lenguaje de programación que se esté utilizando?

    Tengo un procedimiento recursivo que tiene que llamarse así mismo unas 40000 veces, pero cuando llega a 9114 se detiene. Miro en el administrador de tarea, y me doy cuenta que ya no está haciendo uso del procesador.
    ¿Es limitado la pila que se utiliza en los procedimientos recursivos aún cuando mi ordenador veo que tiene memoria disponible? Si es eso, ¿puedo aumentar ese número?

    Esto lo estoy haciendo en un Applet y utilizando a Firefox.

    Gracias.
     

  11. #11  
    Colaborador HH
    Fecha de ingreso
    Sep 2006
    Ubicación
    Argentina
    Mensajes
    2.073
    Descargas
    16
    Uploads
    0
    Cita Iniciado por gondar_f Ver mensaje
    Es una verguenza la mala calidad de los teclados actuales, menos mal que compro de los varateiros que si no me iva a gastar una pasta al final del año, josu que lo compras y un par de meses después alguna de las teclas ya se queda enganchada, se te suelta, no funciona... que diferencia con unos teclados optomecanicos que había hace unos años, eran algo caros pero sabias que tenias teclado por lo menos por el tiempo que durase la garantía.
    Un Saludo
    hombre estoy de acuerdo, de hecho
    termine usando un teclado de acceso rapido II de IBM, viejo, pero efectivo, existen un par de teclados que podrian servirte, uno que se enrolla, de goma y uno que proyecta las teclas (un teclado virtual)

    salu2
    Última edición por 4v7n42; 01-06-2008 a las 06:29
    "¿Acaso vuestro terror se asemeja al del despotismo? Si, la espada que brilla en las manos de los héroes de la libertad se asemeja a la espada con la que están armados los esbirros de la tiranía."
     

  12. #12  
    Avanzado
    Fecha de ingreso
    Jun 2006
    Mensajes
    1.462
    Descargas
    15
    Uploads
    0
    Cita Iniciado por gondar_f Ver mensaje
    Es una verguenza la mala calidad de los teclados actuales, menos mal que compro de los varateiros que si no me iva a gastar una pasta al final del año, josu que lo compras y un par de meses después alguna de las teclas ya se queda enganchada, se te suelta, no funciona... que diferencia con unos teclados optomecanicos que había hace unos años, eran algo caros pero sabias que tenias teclado por lo menos por el tiempo que durase la garantía.
    No te lo tomes a mal, pero es que eres el terror de los teclados
    Imagino que en las tiendas de informática tendrán una foto tuya con un "No vendan teclados a este tipo" debajo

    Hablando en serio, los teclados de ahora son una mierda. Ahora mismo estoy usando un NGS (producto español) que va dpm. Eso sí, veremos durante cuanto tiempo

    Saludos
     

  13. #13  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Hasta hace muy poquito no quería saber nada de ningún tipo de teclado que no fuese mecánico. Tanto es así que dejé de buscarlos en el mercado y usaba antiguos teclados mecánicos desechados que, tras un proceso de reciclado: limpieza, reparación, engrase, pintura ..., me han estado sirviendo fielmente durante años.

    La única pega de estos antiguos teclados (sí, única) es, en mi humilde opinión, su tamaño.

    Y digo "usaba" porque ahora me he pasado a los teclados de bajo coste. Cuando se desgastan demasiado, voy y compro otro. Al precio que están... Pero es un lástima, puesto que todos esos materiales acaban donde no deben, mientras que los otros pueden seguir sirviendo después de cambiar un muelle, una tecla, una lámina...

    Salu2


    Keep on Rollin'

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
     

  14. #14  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Donde me dejan
    Mensajes
    433
    Descargas
    7
    Uploads
    0
    Yo realmente utilizo un teclado antiguo y la verdad es que funciona muy bien. Diria que es de estos mecànicos. Lo malo que miras entre las teclas lo que hay de fondo y te asustas XDD. eso de comer bocadillos mientras miras el foro creo que le sienta muy mal. Para decirte lo antiguo que es no tiene ni las teclas de windows XDD, aun tengo suerte que lleve la conexion de ps2. Jajaja.

    Saludos
    El mejor maestro es uno mismo, aun que siempre va bien una ayudita
     

  15. #15  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Cita Iniciado por foxwar Ver mensaje
    Yo realmente utilizo un teclado antiguo y la verdad es que funciona muy bien. Diria que es de estos mecànicos.
    Saca una tecla y mira si hay un muelle xD
    Cita Iniciado por foxwar Ver mensaje
    Lo malo que miras entre las teclas lo que hay de fondo y te asustas XDD. eso de comer bocadillos mientras miras el foro creo que le sienta muy mal.
    Método a seguir:
    1. Le haces una foto y la conservas
    2. Le sacas todas las teclas
    3. Lo abres y le quitas todos los componentes electrónicos
    4. Lo metes en la lavadora junto con las teclas
    5. Montas los componentes electrónicos
    6. Coges la foto y colocas las teclas en el mismo orden

    Nota: Éste método no está demostrado que funcione, está obtenido a partir de variaciones del mismo xD
    Cita Iniciado por foxwar Ver mensaje
    Para decirte lo antiguo que es no tiene ni las teclas de windows XDD, aun tengo suerte que lleve la conexion de ps2. Jajaja.
    Otro punto a favor de estos antiguos teclados xD

    Salu2


    Keep on Rollin'

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
     

  16. #16  
    Avanzado
    Fecha de ingreso
    Jan 2004
    Ubicación
    Donde me dejan
    Mensajes
    433
    Descargas
    7
    Uploads
    0
    Cita Iniciado por j8k6f4v9j Ver mensaje
    Saca una tecla y mira si hay un muelle xD
    Pues acabo de sacar una tecla y no lleva muelle Oo esto no puede ser.. Jajaja; supongo que el control tambien llevaria muelle XD

    Cita Iniciado por j8k6f4v9j Ver mensaje
    [*]Lo metes en la lavadora junto con las teclas
    Tu lo ves muy normal?? Jajaja. no hace falta meterlas en la lavadora, las teclas por fuera estan como nuevas si si. El problema es la porqueria por dentro que hay teclas que depende del dia se les oye crujir XDD.

    un dia de estos sacare las teclas y les pasare la aspiradora

    Saludos
    El mejor maestro es uno mismo, aun que siempre va bien una ayudita
     

  17. #17  
    Avanzado
    Fecha de ingreso
    Jun 2006
    Mensajes
    1.462
    Descargas
    15
    Uploads
    0
    Cita Iniciado por foxwar Ver mensaje
    El problema es la porqueria por dentro que hay teclas que depende del dia se les oye crujir XDD.
    ¡Qué asco tío!
     

  18. #18 Favor contexten a Naldo9876543 
    Iniciado
    Fecha de ingreso
    Jun 2008
    Mensajes
    2
    Descargas
    0
    Uploads
    0
    Hola, favor contesten lo de Naldo9876543.

    Gracias.
     

  19. #19  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Hola, favor contesten lo de Naldo9876543.
    xD

    Disculpa, es que a veces nos vamos por los cerros de Úbeda... jejeje, a ver, intentaré ayudarte...

    El tamaño de la pila en java está limitado. Depende de la configuración de la JVM. Si mal no recuerdo se podía mediante una consola en el JDK asignar un nuevo tamaño para la pila (también para el heap para el recolector de basura, y mas cosas).

    Si mal no recuerdo poniendo "ss N" podias especificar el nuevo tamaño N para la pila (no estoy seguro si era así).

    La otra alternativa, si quieres que no haya problemas y que los usuarios no tengan que reconfigurar la máquinna virtual para poder ejecutar tu programa sin problemas, es una buena implementación del código.

    Me explico, ¿no existe una alterntiva en la recursión que estás empleando que reduzca el número de llamadas? Si no es así, es decir, si a la fuerza tienes que hacer 40.000 llamadas, la opción mas buena, es que crees hilos de ejecución.

    Con los hilos de ejecución (puedes consultar la ezine 3 de este sitio para más información), consigues asignar nuevos recursos (contador de programa, espacio de memoria, pila, etc...), para cada hilo.

    Así la forma de proceder es, cuando superes un límite especificado por ti en tu código en el número de llamadas recursivas, (no tiene por qué ser igual al tamaño de la pila original, aunque cuanto más proximo esté al tamaño de la pila, mejor optimizarás), entonces creas un nuevo hilo de ejecución, en donde deberás pasar la dirección de retorno de la última llamada recursiva antes de la creación del hilo, para así poder devolver las llamadas correctamente. El nuevo hilo seguirá haciendo las llamadas recursivas que queden por hacer. Si en el nuevo hilo se supera el límite especificado, se vuelve a crear otro hilo de ejecución, en donde pasas la última dirección de retorno del 2º hilo... y así sucesivamente...

    Para implementar los hilos, usa la clase Thread

    Un saludo.
    Última edición por hystd; 07-06-2008 a las 14:16
    El optimista tiene ideas, el pesimista... excusas

     

  20. #20  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    hombre estoy de acuerdo, de hecho
    termine usando un teclado de acceso rapido II de IBM, viejo, pero efectivo, existen un par de teclados que podrian servirte, uno que se enrolla, de goma y uno que proyecta las teclas (un teclado virtual)
    En el trabajo tengo uno de esos teclados de goma, pero no lo uso nunca porque es incomodo, su sistema de teclas es una basura... en resumen, como curiosidad está bien, pero no es un teclado adecuado para usarlo en la práctica... El de proyeccion de teclado solo lo vi una vez un diseño de ese tipo, y fuera en una feria tecnológica de Silleda hace unos años, y aunque el futuro puede ir por ese camino o ser muy adecuado para ciertas tareas... lo cierto es que a falta de provar una versión comercial para uso diario... pues mi opinión es que es un producto muy verde...
    Imagino que en las tiendas de informática tendrán una foto tuya con un "No vendan teclados a este tipo" debajo
    Aunque los de alguna tienda (vease PCBOX o Legend principalmente) piensen eso, pero desde luego no dirian nada, hago demasiado gasto informático para que me digan algo (aparte de lo que yo me gasto en informática, llevo el mantenimiento de un par de empresas y además compro material para amigos).
    Hablando en serio, los teclados de ahora son una mierda. Ahora mismo estoy usando un NGS (producto español) que va dpm. Eso sí, veremos durante cuanto tiempo
    El gran problema es que te tienen una vida útil muy corta, pero mientras no se joden, pues yo a pocos le encontre pegas, no cabe duda de que algunos son más cómodos que otros... pero no sirve de nada que vaya muy bien si a los 2 meses alguna de las teclas ya se queda enganchada por ejemplo.

    Hasta hace muy poquito no quería saber nada de ningún tipo de teclado que no fuese mecánico. Tanto es así que dejé de buscarlos en el mercado y usaba antiguos teclados mecánicos desechados que, tras un proceso de reciclado: limpieza, reparación, engrase, pintura ..., me han estado sirviendo fielmente durante años.
    No hay duda de que no han vuelto a fabricarse teclados como los mecánicos... y es cierto eran caros, pero no es un motivo para que ya no se fabriquen, ya que mucha gente se compra teclados caros (solo hay que ver a Logitech) y los mecánicos se venderían relativamente bien aunque fuesen carillos... Y por encima hoy en día se podrían fabricar de un tamaño mucho menor...
    Lo malo que miras entre las teclas lo que hay de fondo y te asustas XDD
    Eso con una aspiradora de precisión (como las que se usan para limpiar las impresoras laser) pues lo dejas como nuevo...

    Hola, favor contesten lo de Naldo9876543.
    La contestación de hystd es muy buena, mejor dicho excepcional... pero tal vez no tengas que complicarte la vida tanto, creo que fue hasta java 1.4 cuando los niveles máximos de pila en un llamda recursiva eran tan cortos de forma predefinida... actualmente puedes llegar hasta cerca de un millón sin el más mínimo problema, so se porque recientemente estuve ayudando a un compañero la práctica de la UNED del condenado Nonograma y estaba usando una busqueda en anchura (de forma recursiva) y en un nonograma 30x30 se acercaba peligrosamente al millon de llamadas recursivas y sin cambiar ningún parametro (y en mi equipo que tampoco cambie ningún parametro) funcionaba... por lo menos en mi equipo que fue donde primero funciono y está una instalación tal como te lo instala el CD que te envia SUN con el Netbeans (le corregi un par de errores de código... concretamente le cascaba cuando intentaba comparar un char con una cadena y el decia que no había ningún error...)...

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
     

Marcadores

Marcadores