En un programa Java, un método recursivo es un método que se llama . Métodos recursivos pueden ayudar a los programadores a diseñar un fragmento de código para simplificar un problema. Métodos recursivos a menudo parecen ser conciso , pero la creación de una función recursiva eficaz puede ser muy difícil . Al igual que con los bucles y otras estructuras de control de Java, los desarrolladores tienen que trabajar a través de lo que sucederá cuando una función recursiva ejecuta. Métodos recursivos causan una serie de problemas comunes cuando no está estructurado correctamente. Problema Solución Fallo
programadores usan métodos recursivos para resolver problemas particulares. Naturalmente, un método recursivo no proporcionará funcionalidad útil si no resuelve el problema que fue diseñado para . Esto sucede a veces cuando el programador ha optado por utilizar una función recursiva en los que no es apropiado . En general , un método iterativo es ideal para situaciones en las que necesita para resolver un problema usando pasos iterativos . Cada vez que el método se ejecuta , debe hacer que el problema más simple y traer a su programa de un paso más cerca de resolverlo. El resultado final del método recursivo debe ser la solución a su problema, por ejemplo, la localización de un elemento en un objeto de colección de datos.
No End Case
Para una función recursiva para trabajar sin que su programa atrapado en un bucle infinito , debe tener un caso extremo bien definido . Esto significa que debe haber una ejecución final , en lugar de ejecutar el método sin fin . Los programadores suelen implementar esto usando sentencias condicionales dentro del método , como en el siguiente ejemplo : public void doItRecursively (int num) {if (num < 1 ) return; else { System.out.println ( num) ; doItRecursively (num /2 ) ;} }
Para llamar a esta función , un programa puede utilizar el siguiente código : doItRecursively ( 10 ) ;
en este caso la función se ejecutará cinco veces , salir en la quinta iteración. Cada vez que se ejecuta el método que se acerca más a la situación final , que el condicional if comprueba para . Si el método no contenía la sentencia condicional , sería repetir interminablemente .
No Recursión
La cuestión en contra de un método iterativo bucle sin fin es un método eso no quiere iterar en absoluto. Esto también ocurre cuando la sentencia condicional no está estructurado correctamente. Por ejemplo , dado el método " doItRecursively " , la siguiente instrucción if alterado podría causar un problema : si (num > 0 ) de retorno;
Si el método sólo se llama con valores enteros positivos como el parámetro , su contenido nunca se repetirá como se habrá alcanzado el punto final de inmediato.
método incorrecta llamadas
Si el programador llamar a un método recursivo no tiene una idea clara de su función , se puede utilizar de una manera que causa iteración sin fin o sin iteración . Por ejemplo, el siguiente código condicional alteración en el método podría fácilmente ser llamado correctamente : if ( num < 0 ) return;
Si el método sólo se llama con los valores de parámetros enteros positivos , nunca llegar a este punto final y se producirá un bucle infinito. Métodos recursivos pueden causar muchos de los mismos peligros como bucles , por lo que no requieren la práctica de su aplicación efectiva.