Tecnología

Inicio

Funciones recursivas Python

Funciones recursivas Python


Las funciones recursivas son funciones que se llaman a sí mismos en su definición. Debido a que una función recursiva se llama a sí misma para realizar su tarea, puede hacer trabajos que contienen un trabajo idéntico en los datos de múltiples objetos más fáciles de conceptualizar, planificar y escribir. Sin embargo, la repetición puede ser-sistema intensivo o terminar la sobrecarga del sistema si la recursión no se detiene. Programación de funciones recursivas en Python es similar al uso de funciones recursivas en otros lenguajes de programación, con las mismas ventajas y desventajas.

La recursividad de la muestra

Las funciones recursivas llaman a sí mismos como parte de su definición. Por ejemplo:

factor de def (x):

. . . factor X)

Esta función continuará llamarse a sí misma hasta que el sistema ya no puede contener la cantidad de llamadas a funciones realizadas (llamadas a funciones residen en la memoria como cualquier otro dato). Sin embargo, esto simplifica cómo funciona un recursivas obras conceptualmente: Una función (factor) llama a sí mismo (factor (x)), como parte de su definición.

Casos Base

Una función recursiva debe tener lo que podría llamarse "casos base", o condiciones que indican a la función de detener su recursividad. Esto podría ser cualquier condición de que la función podría tener satisfecho como parte de su funcionamiento. Como un ejemplo clásico, la función factorial encuentra el factorial de un número n (n !, o n n-1 n-2... 0). Así que el factorial de 3 computaría a 3 2 1 = 6. Un programador podría utilizar el número 0 como el caso base de esta función:

si x == 0:

. . . volver 1

La recursividad

Si la función factorial tiene ahora un caso base (x == 0), entonces la recursión se detendrá en esta condición. Por lo tanto, sólo sería una cuestión de usar recursión para realizar la operación factorial:

más:

. . . return x * factor (x-1)

Si x no es igual a 0, la recursividad se iniciará / continuar. La sentencia return llamará "factor" y esperar. Cada nueva llamada a la función hará lo mismo, llamando y esperando hasta que la última llamada de función (cuando x == 0) devuelve 1. A continuación, cada llamada previa terminará la instrucción de retorno (multiplicar el valor devuelto por "factor" por x) hasta se devuelve el factorial.

La recursividad Python

La recursividad en cualquier idioma puede terminar en un bucle infinito: es decir, una estructura recursiva que nunca termina hasta que el sistema se detiene debido a la falta de recursos. Python se detiene esta recursividad "infinito" en 1.000 llamadas (por lo que una función puede llamar a sí mismo en una cadena recursiva 1.000 instancia, mucho antes de Python se detiene el proceso). El programador puede cambiar este valor a través de las bibliotecas del sistema, como en este ejemplo:

import sys

sys.setrecursionlimit (2000)

Sin embargo, al punto de que los programadores podrían preguntarse si la repetición es la mejor solución para el problema.