La recursividad podría definirse como el arte de hacer que una cosa se llame a sí misma hasta que tú quieras
Los ejemplos típicos son la sucesión de Fibonacci, o el algoritmo de ordenación Quicksort.
Para Fibonacci:
Código Python:
Ver originaldef fibo(n):
a, b = 0, 1
while a < n:
print a, b
a, b = b, a + b
Lo he puesto de memoria, creo que está bien
Esto muestra los términos de la sucesión de Fibonacci menores que un número n
Esto puede hacerse recursivamente si quieres calcular el término n de la sucesión:
Código Python:
Ver originaldef fibo(n):
return 1 if n <= 2 else fibo(n - 1) + fibo(n - 2)
Si el término es 2 o menos, devolvemos 1, si es mayor calculamos la suma de los dos anteriores términos de la sucesión. Fíjate que si n es 4, por ejemplo, hay que añadir un nivel más de recursión, porque n - 1 sería 3, y por tanto fibo(3) tendría que calcular fibo(2) + fibo(1).
Como podrás imaginar, cuanto mayor sea n mucho mayor será el número de cálculos que habrá que hacer, por eso los algoritmos recursivos no suelen ser muy eficientes a la larga.
PD: El primer snippet no contiene nada de recursión, era sólo para mostrar qué es la sucesión de Fibonacci por si no la conocías, aunque si dices que hay tantas matemáticas puede que sí sepas de qué hablo.
Espero que te haya ayudado.
Saludos (:
PD2: Pregunta mamporrera, si vives en Canarias, ¿cómo es que estudias en la UJI de Castellón?