domingo, 24 de febrero de 2008

Recursividad

Las funciones recursivas son funciones que se llaman a si misma:

ej:
def funcion_hola():
funcion_hola()

Bueno, y esto para que sirve?.

Existen un monton de algoritmos dentro del mundo de los video juegos que estan escritos en forma recursiva, como son los del tipo backtracking, los cuales entre sus aplicaciones sirven para crear laberintos y tambien para encontrar sus soluciones. Tambien hay algoritmos del tipo divide and conquer como por ejemplo el quicksort.

El limite de la recursividad:
La principal restriccion de la recursividad es que no puede ser infinita, o sea el primer ejemplo que les di viola esta restriccion y por lo tanto esta malo, de hecho si intentamos hacer correr un algoritmo asi obtendremos un error del tipo "se ha superado la profundidad maxima de la recursion". Ahora el limite exacto de la recursividad depende de los interpretes o de los compiladores pero es bastante profundo asi que mientras el limite de la funcion este claro, veamos ejemplos

Factorial:
-El factorial de un numero N, natural (o sea un entero > 0) se anota como N!
y esta definido asi:
N! = (N - 1)!

-El factorial de 0, esta definido como 1.

En base a estas 2 definiciones podemos programar una funcion recursiva que calcule el factorial de un numero


#---codigo
def recursive_factorial( n ):
if n == 0:
return 1
else:
return n * recursive_factorial( n - 1 )
#---fin codigo

No hay comentarios: