Un método recursivo es un método que se llama a sí mismo directa o indirectamente.
Hay dos requisitos clave para asegurarse de que la recursión sea exitosa:
- Cada llamada recursiva debe simplificar el cálculo de alguna manera.
- Debe haber casos especiales para manejar los cálculos más simples.
Iteración vs. Recursividad
- Si se llama a un método recursivo con un caso base, el método devuelve un resultado. Si se llama a un método con un problema más complejo, el método divide el problema en dos o más piezas conceptuales: una pieza que el método sabe cómo hacer y una versión un poco más pequeña del problema original. Debido a que este nuevo problema se parece al problema original, el método lanza una llamada recursiva para trabajar en el problema más pequeño.
- Para que la recursión termine, cada vez que el método de recursión se llama a sí mismo con una versión ligeramente más simple del problema original, la secuencia de problemas cada vez más pequeños debe converger en el caso base. Cuando el método reconoce el caso base, el resultado se devuelve a la llamada al método anterior y una secuencia de devoluciones asegura la línea hasta que la llamada original del método finalmente devuelva el resultado final.
- Tanto la iteración como la recursividad se basan en una estructura de control: la iteración utiliza una estructura de repetición; La recursión utiliza una estructura de selección.
- Tanto la iteración como la recursión implican repetición: la iteración usa explícitamente una estructura de repetición; La recursión logra la repetición a través de llamadas a métodos repetidos.
- La iteración y la recursión implican una prueba de terminación: la iteración termina cuando falla la condición de continuación del bucle; La recursión termina cuando se reconoce un caso base.
- La iteración y la recursión pueden ocurrir infinitamente: un ciclo infinito ocurre con la iteración si la prueba de continuación del ciclo nunca se vuelve falsa; La recursión infinita ocurre si el paso de recursión no reduce el problema de una manera que converge en el caso base.
- La recursión invoca repetidamente el mecanismo y, en consecuencia, la sobrecarga de las llamadas a métodos. Esto puede ser costoso tanto en tiempo de procesador como en espacio de memoria.
Fuente: http: //www2.hawaii.edu/~tp_200/l…
- Como estudiante, ¿es inteligente crear mis propias bibliotecas de programación matemática?
- ¿Qué parte de Machine Intelligence no es la optimización (por ejemplo, un proceso de decisión de Markov)?
- ¿Cómo hago para hacer investigación de pregrado en CS?
- ¿Cómo resuelven las computadoras fórmulas y ecuaciones matemáticas?
- Quiero aprender matemáticas programando. ¿Cuáles son los proyectos de programación simples pero geniales que requerirían conocimiento de álgebra, cálculo, probabilidad, etc.?