domingo, 21 de marzo de 2010

FACTORIAL!











OBJETIVO:
El alumno deberá reconocer la diferencia entre un algoritmo recursivo y un algoritmo iterativo, aparte de elaborar uno de los dos.
PROCEDIMIENTO:
Se agrupan equipos de 3 o 5 personas para mayores oportunidades de investigacion, agrupan ideas sobre que fue lo que entendió cada uno, para asi llegar a una conclusión y poder exponer un trabajo.
MODO DE TRABAJO:
Nuestro equipo compuesto por mis compañeros Elias, Gonzalo y yo, empezamos a trabajar desde el primer día, buscando información y resolviendo dudas que teniamos sobre el formato del proyecto, Elias y yo, buscamos informacion en varias paginas web, las cuales pondremos en la bibliografía, ya reunida la informacion nos citamos un martes en el edificio 4, y empezamos a pensar en la manera de formular ambos algoritmos, hicimos el Iterativo, pues en Recursivo todavía teniamos duda de como manejarlo en la funcion "main", despues con Gonzalo me quede de ver en las asesorias de los martes, para resolver algunas dudas, ya con la informacion otorgada por la doctora, nos volvimos a citar un jueves para concretar lo que faltaba y ponernos de acuerdo en cuales iban a ser nuestros roles para exponer nuestro proyecto, pues ya que todos habiamos participado en la recopilacion de informacion y en la propuesta de ideas, decidimos que cada quien de un tema.

Ahora la explicacion del proyecto

A mi entendimiento, un algoritmo iterativo es aquel que se cicla, pero al momento de querer usarlo de nuevo, tenemos la trabajosa labor de volverlo a escribir.
He aqui la sintaxis de un algoritmo Iterativo para saber el factorial de "x" numero.

1.-Primero, por default sabemos que 0!=1 y que 1!=1, entonces declaramos nuestra variable "fac" dandole valor de 1.
2.-Le damos un valor a "n" por ejemplo 3, bueno ahora tenemos que n=3
3.-Se filtra "n" si n>1, pasa a resolver dicha operacion fac*=n, y a "n" se le resta 1.
4.-ahora fac=3 y n=2, y se cicla hasta que n=1.
5.-Luego ya imprime el resultado para finalizar.

Ahora un algoritmo Recursvio para el mismo problema.

A mi entendimiento un algoritmo recursivo, es aquel que su sintaxis aparece una vez dentro de nuestro programa, pero declarada como funcion, no como variable, entonces, como es una funcion podemos llamarla cuantas veces queramos dentro de nuestro programa.

1.-Primero formulamos nuestra función llamada "factorial (n)", y empezamos.
2.-Filtramos "n", con la sentencia n<2, si esto es cierto, entonces la funcion regresa 1, si es falso la funcion regresa la operacion ya indicada para el factorial.
3.-Ahora en nuestra funcion principal (main), declaramos "x".
4.-Luego le damos un valor, despues imprimimos pero en vez de mandar a llamar a un resultado previo, lo que hacemos es mandar a llamar a la funcion "factorial (n)" pero "n" lo sustituimos por "x" ya que es la variable la cual queremos saber el factorial.

FUENTE:
http://www.slideshare.net/demogorgon/algoritmos-recursivos
http://es.wikipedia.org/wiki/Algoritmo_recursivo
http://es.wikipedia.org/wiki/Algoritmo_iterativo

TIEMPO DE EJECUCIÓN:

Este programa corre a un tiempo polinominal, asi que su complejidad pasa a ser -p-

CONCLUSION:
Aprendimos a identificar en que casos aplicar recursion e iteratividad, que diferencias tienen, cuales son sus ventajas y desventajas, etc.

BLOGS DE MIS COMPAÑEROS:
http://elias1218.mibitacora.com
http://gonzalomarroquinrdz.blogspot.com

**LA PRESENTACION EN POWER POINT, no estaba seguro si subirla aqui o solo exponerla en clase el martes 23 de marzo**