Factorial iterativo

FACTORIAL ITERATIVO

El siguiente ejemplo de programación es un clásico en el tema de la recursividad, sin embargo, primero lo veremos de forma iterativa y posteriormente de forma recursiva y notaremos algunos problemas con el ejemplo de recursión.

Como recordarás, el factorial de un número es la multiplicación sucesiva de la serie del 1 al número deseado. Por ejemplo:

5! = 5 X 4 X 3 X 2 X 1
5! = 120

El símbolo '!' se utiliza para denotar el factorial del número que se escribe antes de éste símbolo. Podemos observar la serie de multiplicaciones que ocasiona el factorial. Una regla importante para el factorial es: 

0! = 1

Conociendo cómo funciona el factorial, podemos pasar a la implementación del programa de forma iterativa:

#-*- coding: iso8859-1 -*-


"""
Programa que muestra el factorial de un valor entero (n!)

PROGRAMA : FactorialIterativo.py
PROGRAMADOR : Cruz Gómez Jovanny Pablo  
                exp_95
LENGUAJE : Python
FECHA : 20 de Marzo de 2012
"""


import os


#-------------------------------------------------------------
# factorial()
#-------------------------------------------------------------


def factorial(n):
  resultado = 1

  for i in range(n):
resultado *= (i + 1)

return resultado

os.system("color F0")


consulta = '1'
while(consulta != '0'):
os.system("cls")


valor = input("Ingresa un valor: ")
fact = factorial(valor)

print "\nEl factorial de ", valor, " es: ", fact

print "\nPara salir presiona 0"
consulta = raw_input("de lo contrario cualquier tecla: ")


En la función 'factorial()' se puede observar el uso del bucle 'for' para acumular las multiplicaciones. Al ejecutar el programa anterior y tomando de ejemplo 5!, tenemos:

5!

Lo mejor de utilizar el factorial de forma iterativa en Python, es que funciona para cantidades grandes (hasta enormes) y es capaz de mostrar todos los dígitos del resultado. En el caso de las calculadores científicas como la fx-991ES PLUS, el factorial máximo que puede calcular es el 69, ya que al intentar calcular 70!, la calculadora se desborda.

El resultado que la fx-991ES PLUS muestra para 69! es:

Resultado de 69! con la fx-991 ES PLUS

El resultado en la calculadora es mostrado con la notación científica. Ahora bien, si probamos nuestro programa para 69! nos muestra: 

Resultado de 69! con el programa FactorialIterativo.py

Podemos observar exactamente el mismo resultado; la diferencia, es que Python muestra todos los dígitos de la operación.

NOTA:
Para el caso de utilizar el factorial en otro lenguaje
de programación como C/C++ o Java, tendremos
un problema de desbordamiento similar al que de 
calculadora debido a los tipos de datos que manejan.
Python es una poderosa calculadora =)

Ahora probemos algo más fuerte, algo que la calculadora científica no es capaz de calcular. ¿Qué les parece 1000! ? Veamos si Python es capaz de resolverlo:

Resultado de 1000!

Wooow! Python es capaz de resolver 1000!. Ahora probemos algo aún más fuerte =D

23525!

Resultado de 23525!

Vaya, parece que tenemos un problema y es que NO SABEMOS QUÉ HACER CON TANTO NÚMERO QUE ARROJÓ PYTHON =D y es que parece que el resultado no tiene fin jeje

Finalmente podemos concluir que Python funciona como una potente calculadora que es capaz de resolver factoriales de números muy grandes y arrojar resultados gigantescos.


1 comentario:

Visitas