Vous êtes sur la page 1sur 3

Anlisis para construir el algoritmo del Factorial

(y otras series)
Al comienzo puede parecer un poco confuso, pero todo se va aclarando a medida que avanzan leyendo.

El factorial es la multiplicacin de todos los nmeros enteros desde 1 hasta el nmero es decir:

(incluido),

O de manera recurrente (no se enreden con esta, solo por curiosidad):

)
Expresado de manera simplificada como la productoria:

Recordemos que la productoria viene siendo: Que es la manera que nos interesa, porque ya sabemos una manera de recorrer nmeros desde un valor inicial hasta un final: Pseudocdigo Entero i k Mq(i n) . . . Instrucciones . . . i i + 1 Fin_Mq Visual C++ int i = k ; while(i <= n){ . . . Instrucciones . . . i++; }

Lo anterior no es ms que la estructura que hemos usado constantemente en clase para repetir ciertas instrucciones veces, si nuestro , que es el caso del factorial. Ahora, siguiendo el

ejemplo de otros ejercicios hechos en clase, las sumatorias y las productorias, van acumulando los resultados de cada una de sus iteraciones, la diferencia est en que la sumatoria las va acumulando sumando sus iteraciones mientras que la productoria utiliza la multiplicacin. Puede parecer obvio pero es clave para la resolucin del problema, sobretodo la palabra acumular. La diferencia tambin recae en que el acumulador de la sumatoria empieza en 0, mientras que la productoria comienza en 1, es decir cada uno con su elemento neutro. Agregamos lo ltimo ahora a nuestro cdigo: Pseudocdigo Entero i 1, acum 1 Mq(i n) . . . Instrucciones . . . i i + 1 Fin_Mq Visual C++ int i = 1, acum = 1; while(i <= n){ . . . Instrucciones . . . i++; }

Hasta ahora tenemos el contador, y el acumulador que nos va a ir guardando el resultado en cada iteracin, ahora si vemos la definicin de la productoria nos damos cuenta que tiene una funcin que depende de , la cual puede ser constante, pero para el factorial es el mismo contador , es decir: El factorial multiplica todos los hasta . Sabiendo esto ya tenemos la operacin principal de nuestro algoritmo: Pseudocdigo Entero i 1, acum 1 Mq(i n) acum acum x i i i + 1 Fin_Mq Visual C++ int i = 1, acum = 1; while(i <= n){ acum = acum * i; i++; }

Y listo! Ya tenemos el valor de guardado en la variable acum. Ahora solo resta mostrarle al usuario o hacer otra cosa que queramos con ese valor: Pseudocdigo
Inicio |Entero i 1, acum 1, n |Escriba(Digita el valor de n: ) |Lea n |Mq(i n) ||acum acum x i ||i i + 1 |Fin_Mq |Escriba(El factorial | de,n,es:,acum) Fin

Visual C++
void main(){ int i = 1, acum = 1, n; cout<<Digita el valor de n: ; cin>>n; while(i <= n){ acum = acum * i; i++; } cout<<El factorial de <<n<<es: <<acum;

Dicho esto repasemos los pasos que seguimos: 1) 2) 3) 4) 5) 6) Identificamos el tipo de serie (Sumatoria o Productoria). Hallamos el valor inicial y final, y su incremento. Dependiendo del tipo de series, inicializamos el valor ( 0 1) Hallamos la funcin que rige la serie Esta la operamos (sumar o multiplicar) con nuestro acumulador El resultado lo guardamos dentro del mismo acumulador.

Ya con estos simples pasos pueden resolver casi cualquier (sino todas) las series que se les presenten.

Andrs A. Prez L.

Vous aimerez peut-être aussi