Tecnicas+de+programacion+recursiva

[[image:http://web.uam.es/personal_pdi/ciencias/pangulo/doc/laboratorio/_images/math/9c34e52c55084ceca2cca3b60f84eeb663c11065.png caption="n!=n*(n-1)! text{ si } n>0"]]
podemos expresar esto así: def factorial(n): if n == 1: return 1 else: return n * factorial (n-1)

Dado que restamos uno de N cada vez y comprobamos si es igual a uno, la función no es infinita y puede completarse correctamente.
sage: def factorial_rec(n):

... if n
0: ===

sage: var = factorial_rec(1)
==== Escribir la función del factorial sin utilizar la recursividad implica el desarrollo de mucho más código. Necesitamos crear una lista de todos los números desde el 1 al N y luego iterar en la lista multiplicando el total actual por el item siguiente. Puedes probar hacerlo como un ejercicio y comparálo con la función definida más arriba. ====