1. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! OsvaldoJavier Hinojosa | Ricardo Tovar | Jose Luis Valdes | Raul Guerrero 1452344146343913666741330260
2. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! Iteración Usar la iteración en el computo de factoriales es repetir la funcionalidad del programa el número de veces necesarias por el usuario sin salir de este, hasta que se desee.
3. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! Recursión Usar la recursión en el computo de factoriales es simplificar el algoritmo hasta un punto en el que se pueda resolver (caso base).
4. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! Complejidad computacional Hoy en día las computadoras resuelven problemas mediante algoritmos que tienen como máximo una complejidad o coste computacional polinómico, es decir, la relación entre el tamaño del problema y su tiempo de ejecución es polinómica. Éstos son problemas agrupados en la clase P. Los problemas que no pueden ser resueltos por nuestras computadoras (las cuales son Máquinas Determinísticas), que en general poseen costes factorial o combinatorio pero que podrían ser procesados por una máquina no-determinista, están agrupados en la clase NP. Estos problemas no tienen una solución práctica, es decir, una máquina determinística (como una computadora actual) no puede resolverlos en un tiempo razonable.
5. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! Algoritmo iterativo
6. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! Pseudocódigo iterativo #include <stdio.h> long int factorial (int x) /*definición de función*/ { inti; long intfac = 1; for (i=2; i<=x; i=i+1) fac=fac*i; return (fac); } main () /* función principal */ { int a; do { printf (" Introduce el numero "); scanf ("%d", &a); if (a>0) printf ("El factorial es %ld", factorial (a)); } while (a > 0); } Link al programa
8. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! ¿Recursión? Desventajas Ventajas Soluciones simples y claras Soluciones elegantes Soluciones a problemas complejos INEFICIENCIA Sobrecarga Costo mayor en tiempo y memoria
9. Introducción Complejidad Análisis asintótico Formulación de algoritmos Conclusiones y recomendaciones PROYECTO 3 COMPUTO DEL FACTORIAL n! ¿Recursión o iteración? LA RECURSIVIDAD SE DEBE USAR CUANDO SEA REALMENTE NECESARIA, ES DECIR, CUANDO NOEXISTA SOLUCIÓN ITERATIVA SIMPLE.