Funciones recursivas en Python

Escrito por g.s. jackson | Traducido por juliana star
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
Funciones recursivas en Python
La recursión en Python ofrece los mismos costos y beneficios que proporciona en otros lenguajes de programación. (Jupiterimages/Photos.com/Getty Images)

Las funciones recursivas son funciones que se invocan a sí mismas en su definición. Debido a que una función recursiva se invoca a sí misma para realizar su tarea, esta puede realizar acciones que contengan trabajos idénticos en múltiples objetos de datos más sencillos de conceptualizar, planear y escribir. Sin embargo la recursión puede ser intensa para el sistema o terminar sobrecargándolo si no se detiene. Escribir funciones recursivas en Python es similar a usar funciones recursivas en otros lenguajes de programación, con los mismos beneficios y riesgos.

Otras personas están leyendo

Ejemplo de recursión

Las funciones recursivas se invocan a sí mismas como parte de su definición. Por ejemplo:

>>>def factor(x): . . . factor(x)

Esta función continuará invocándose a sí misma hasta que el sistema ya no pueda gestionar la cantidad de llamadas a la función realizadas (las invocaciones a la función residen en la memoria como cualquier otra información). Sin embargo esto simplifica la manera en la que una función recursiva funciona conceptualmente: una función (factor) se invoca a sí misma (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 le indican a la función que detenga su recursión. Puede tratarse de cualquier condición que la función pueda satisfacer como parte de su operación. Como un ejemplo clásico, la función factorial obtiene el factorial de un número n (n!, or n * n-1 * n-2 . . . 0). De esta forma el factorial de 3 se calcularía como 3 * 2 * 1 = 6. Un programador podría usar el número 0 como el caso base de esta función:

>>>if x == 0: . . . return 1

Recursión

Si la función factorial ahora tiene un caso base ( x == 0), entonces la recursión se detendrá en dicha condición. De esta forma, solamente sería cuestión de usar la recursión para realizar la operación del factorial:

>>>else: . . . return x*factor(x-1)

Si x no es igual a 0, entonces la recursión comenzará/continuará. La instrucción return invocará a "factor" y esperará. Cada nueva invocación de la función hará lo mismo, llamando y esperando hasta que la última invocación de la función (cuando x == 0) retorne un 1. Después, cada invocación anterior terminará la instrucción return (multiplicar el valor retornado por "factor" por x) hasta que se obtenga el factorial.

Recursión en Python

La recursión en cualquier lenguaje puede terminar en un ciclo infinito: esto es una estructura recursiva que nunca termina sino hasta que el sistema se detenga debido a la falta de recursos. Python detiene esta recursión "infinita" en el momento de las 1.000 invocaciones (por lo que una función puede llamarse a sí misma en una cadena recursiva de 1.000 instancias de largo antes de que Python detenga 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 punto los programadores quizá se pregunten si la recursión es la mejor solución para el problema.

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles