• Inicio
  • Buscar
  • Ingresar
  • Registrarse

    ¿Sabes el motivo de que fallen tanto algunas impresoras Epson?

    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • es necesaria la recursividad??
    • Imprimir
    Páginas: [1] 2   Ir Abajo

    Autor Tema: es necesaria la recursividad??  (Leído 9244 veces)

    Desconectado fenix_93

    • { L1 } Newbie
    • *
    • Mensajes: 60
    • dar el mejor esfuerzo no es sufficiente
      • Ver Perfil
    es necesaria la recursividad??
    « en: Marzo 26, 2015, 03:46:44 am »
    Hola, Estoy aprendiendo lenguaje C y ya llevo un buen tiempo programando en este lenguaje pero aun se me dificulta la recursividad.
    Mi pregunta es: Es muy necesario aprender recursividad??? ¿se utiliza muy a menudo?
    En línea
    dar el mejor esfuerzo no es sufficiente, hay que ser el mejor

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #1 en: Marzo 26, 2015, 09:50:04 am »
    No es necesaria, cualquier algoritmo recursivo se puede reescribir como iterativo, y viceversa.

    Sin embargo, muchos problemas se describen más fácilmente con un enfoque recursivo (recorrer todos los directorios de un sistema de ficheros, por ejemplo).

    Además, es una herramienta muy potente. En programación funcional se usan funciones recursivas en lugar de bucles.

    Cuando interiorices la recursividad, el siguiente paso es la recursividad final (tail recursion en inglés) :-)
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado fenix_93

    • { L1 } Newbie
    • *
    • Mensajes: 60
    • dar el mejor esfuerzo no es sufficiente
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #2 en: Marzo 27, 2015, 03:53:43 am »
    ufffff, bueno, muchas gracias. veo que me toca estudiar mucho porque se me dificulta un poco hacer algoritmos por recursividad pero espero q no por mucho tiempo.
    En línea
    dar el mejor esfuerzo no es sufficiente, hay que ser el mejor

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #3 en: Marzo 27, 2015, 09:05:13 am »
    Cita de: fenix_93 en Marzo 27, 2015, 03:53:43 am
    ufffff, bueno, muchas gracias. veo que me toca estudiar mucho porque se me dificulta un poco hacer algoritmos por recursividad pero espero q no por mucho tiempo.

    En realidad no es tan difícil. Hay problemas para los que la recursividad es natural. El ejemplo típico es la definición matemática de factorial:
    fact(n) = 1 si n es 0
    fact(n) = n * fact(n-1) en los demás casos

    Otro ejemplo es la exploración de sistemas de ficheros:
    Código: [Seleccionar]
    int numFicherosDirectorios (Directorio d)
    {
        count = 0;
        for each fichero in d
            count++;

        for each directorio dir in d
            count += numFicherosDirectorio(dir);
    }

    Para explorar árboles, se trata cada nodo como si fuera la raíz de un árbol más pequeño:

    Código: [Seleccionar]
    ]nodo buscarElementoEnArbolBinario(nodo arbol, int elemento)
    {
        if (elemento == nodo.valor)
            return nodo;
        else if (elemento < nodo.valor)
            return buscarElementoEnArbolBinario(nodo.izquierda, elemento);
        else // if (elemento > nodo.valor)
            return buscarElementoEnArbolBinario(nodo.derecha, elemento);
    }

    Si tienes que sumar una lista de valores de un array, también lo puedes hacer recursivamente, pero es absurdo.
    « Última modificación: Marzo 27, 2015, 06:33:11 pm por Krakakanok »
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado Jen

    • { L4 } Geek
    • ****
    • Mensajes: 490
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #4 en: Marzo 27, 2015, 11:18:31 pm »
    Otro ejemplo típico dónde la solución recursiva es MUCHO más sencilla que la solución iterativa es el de las Torres de Hanoi.
    « Última modificación: Marzo 27, 2015, 11:24:31 pm por Jen »
    En línea
    ~ Auditorías en el espacio

    Desconectado fenix_93

    • { L1 } Newbie
    • *
    • Mensajes: 60
    • dar el mejor esfuerzo no es sufficiente
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #5 en: Marzo 30, 2015, 04:38:00 am »
    muchas gracias, ya lo he estado estudiando y poco a poco se me facilita
    En línea
    dar el mejor esfuerzo no es sufficiente, hay que ser el mejor

    Desconectado C_printfer

    • { L4 } Geek
    • ****
    • Mensajes: 350
    • NO RESPONDO PRIVADOS CON DUDAS, para eso el foro
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #6 en: Marzo 30, 2015, 11:59:35 am »
    La recursividad siempre es difícil. Pero cierto es que a veces, dada la complejidad del problema, es mucho más interesante hacer el código recursivo, ya que incluso se te ocurre antes esa solución que la iterativa.

    Y bueno... Eso de que siempre hay una solución iterativa... Me parece demasiado arriesgado afirmar eso jajaja, aunque por ahora creo que todo lo que me he encontrado se podría haber hecho iterativo también.
    En línea
    "Cuando leo comentarios de propuestas sobre a donde debe ir C, a menudo vuelvo la vista atrás y doy gracias de que no se haya desarrollado bajo el asesoramiento de multitudes de todo el mundo".

    Dennis MacAlistair Ritchie

    https://twitter.com/C_printfer

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #7 en: Marzo 30, 2015, 03:20:49 pm »
    Cita de: C_printfer en Marzo 30, 2015, 11:59:35 am
    Me parece demasiado arriesgado afirmar eso

    Cualquier función recursiva se puede convertir en recursiva final, y la conversión de recursiva final a iterativa es trivial.
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado StackOverflow

    • { L0 } Ñuub
    • Mensajes: 13
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #8 en: Marzo 31, 2015, 08:55:54 am »
    Yo diría que la recursividad sólo se usa para fines didácticos, porque en la práctica un programa recursivo puede gastar muchísima memoria y tiempo.
    En línea

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:es necesaria la recursividad??
    « Respuesta #9 en: Marzo 31, 2015, 09:22:18 am »
    Cita de: StackOverflow en Marzo 31, 2015, 08:55:54 am
    Yo diría que la recursividad sólo se usa para fines didácticos, porque en la práctica un programa recursivo puede gastar muchísima memoria y tiempo.

    Sólo si está mal escrito.
    En línea
    You do not need hope if you have drama to back you up.

    • Imprimir
    Páginas: [1] 2   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • es necesaria la recursividad??
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more