recursividad puede ser una técnica útil para los programadores. Funciones recursivas , a veces conocido como "métodos" en lenguajes como Java , son funciones que se llaman a sí mismos . Hay ciertas situaciones en las que las funciones recursivas son particularmente adecuados . Sin embargo , puede ser difícil de implementar correctamente una función recursiva , por lo que debe ser usada en su caso . Funciones recursivas son útiles a menudo cuando se trata de estructuras de datos y actividades de matemáticas. Clasificación
Cuando los datos del modelo programas , ya sea internamente o importados de una fuente, como una base de datos , a menudo es necesario para solucionar el problema . Algunas estructuras de datos no están ordenados , lo que significa que los elementos no están dispuestos en orden consecutivo . Por ejemplo , un programa podría contener una matriz con cadenas de texto dentro de él . Para ordenar la matriz de modo que las cadenas de texto están organizados en orden alfabético ascendente , el programa puede necesitar usar un algoritmo. Combinar tipo es un ejemplo de un método recursivo para este proceso . Combinar trabajos de ordenación mediante la continua división de la matriz en dos, cada mitad de la clasificación antes de la fusión de nuevo en una sola.
Búsqueda
Cuando los programas almacenan datos en estructuras de datos , a menudo que localizar determinados elementos utilizando algoritmos de búsqueda , que pueden beneficiarse de la recursividad. Por ejemplo , si una matriz es el almacenamiento de los valores en orden alfabético , el programa puede utilizar la recursividad de averiguar cuál es la posición de un determinado elemento se encuentra en. Búsqueda binaria implica el programa continuamente el control de un elemento a medio camino a través de la matriz. Si el elemento coincide con la que el programa está buscando , puede parar . Si no es el elemento de que se trate , el algoritmo puede comprobar si es mayor o menor que el elemento de búsqueda . Si es mayor , el algoritmo puede eliminar la mitad superior de la estructura más allá del elemento actual , ya que el elemento de búsqueda debe estar en la mitad inferior . Este proceso continúa hasta que se encuentra el elemento .
Data Structures
Al decidir sobre los algoritmos , los programadores deben preguntar si una función que no es recursiva podría resolver iterativo la tarea , así como uno recursivo . Por ejemplo, en ciertas estructuras de datos , un programa tendrá que buscar a través de una forma lineal hasta que se encuentra un elemento de búsqueda. En este caso no hay otra alternativa para recorrer la estructura. Algoritmos recursivos simplifican la tarea con cada iteración, la comprobación para ver si el punto final ha llegado, a continuación, llamar a la función de nuevo si no lo ha hecho . Para demostrar las similitudes entre la recursividad y la iteración , el siguiente método Java de ejemplo muestra un método esquema recursivo : void processNumber (int myNum ) { if ( myNum > 100 ) return; más processNumber ( myNum * 5 ) ; } public
< p > Una alternativa iterativo aplicación de la presente sería de la siguiente manera : . int ANUM = 3 , mientras que ( ANUM < 100 ) { ANUM * = 5 ; }
En este caso la versión iterativo es más sencillo
< br >
tareas matemáticas
algunas tareas de procesamiento de matemáticas son especialmente adecuados para las funciones recursivas . Secuencias de Fibonacci demuestran procesamiento recursivo . Cada número en una secuencia de Fibonacci es la suma de los dos anteriores . El siguiente ejemplo de código Java demuestra una función para encontrar un número Fibonacci : public int getFibonacci (int FNUM ) { if ( FNUM < = 1 ) FNUM retorno; otra vuelta getFibonacci ( FNUM - 1 ) + getFibonacci ( FNUM - 2 ) ;}
el método devuelve el número de la secuencia de Fibonacci en la posición indicada por un parámetro entero cuando el código llama, de la siguiente manera : getFibonacci ( 8 ) ;
devolvería el octavo número. (Ver Referencias 3 , 4, 5 )