funciones recursivas son funciones que se llaman a sí mismos en su definición . Debido a una función recursiva se llama a sí mismo para llevar a cabo su tarea , puede hacer trabajos que contienen trabajos idénticos en múltiples objetos de datos más fácil de conceptualizar, planificar y escribir. Sin embargo , la recursión puede ser intensivo del sistema o terminar la sobrecarga del sistema si la recursión no se detiene . Escritura de funciones recursivas en Python es similar al uso de las funciones recursivas en otros lenguajes de programación , con las mismas ventajas y desventajas . Ejemplos de recursividad
funciones recursivas llaman a sí mismos como parte de su definición. Por ejemplo :
>>> factor de def (x ) :
. . . factor (x )
Esta función seguirá llamándose 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 conceptualmente a las funciones recursivas : Una función (factor ) llama a sí mismo (factor (x ) ), como parte de su definición
Base Casos
. Una función recursiva debe tener lo que podríamos llamar "los casos de base" o condiciones que indican la función de detener su recursividad. Esto podría ser cualquier condición de que la función pudo haber 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 * n - 1 - 2 ... 0 ) . Así que el factorial de 3 sería calcular a 3 * 2 * 1 = 6 . Un programador puede utilizar el número 0 como el caso base de esta función :
>>> if x == 0 :
. . . volver 1
recursividad
Si la función factorial tiene ahora un caso base ( x == 0), la recursividad se detendrá en esta condición. Por lo tanto, sólo sería una cuestión de usar recursividad para realizar la operación factorial :
>>> más:
. . . return x * factor (x - 1) spanish
Si x no es igual a 0 , entonces la repetición comenzará /continuar . La sentencia return llamará "factor" y esperar. Cada nueva llamada a la función hará lo mismo , llamar y esperar hasta que la última llamada de función ( cuando x == 0 ) devuelve 1 . A continuación, cada llamada anterior terminará la sentencia return (multiplique el valor devuelto por "factor " de x ) hasta el factorial se devuelve .
Python recursividad
recursividad en cualquier lenguaje puede terminar en un bucle infinito , es decir, una estructura recursiva que nunca termina hasta que el sistema impide que por falta de recursos. Python detiene esta recursión " infinita " en 1000 llamadas ( por lo que una función puede llamar a sí mismo en una cadena recursiva ejemplo 1000 - mucho antes de Python 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 , en ese momento los programadores podría preguntarse si la recursividad es la mejor solución para el problema.