Post on 08-Jul-2015
description
5/9/2018 An lisis para construir el algoritmo del Factorial y otras Series - slidepdf.com
http://slidepdf.com/reader/full/analisis-para-construir-el-algoritmo-del-factorial-y-otra
Análisis 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 multiplicación de todos los números enteros desde 1 hasta el número (incluido),
es decir:
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 números desde
un valor inicial hasta un final:
Pseudocódigo Visual C++
Entero i ← kMq(i ≤ n)
.
.
.Instrucciones
..
.i ← i + 1
Fin_Mq
int i = k ;while(i <= n){
.
.
.Instrucciones
..
.i++;
}
Lo anterior no es más 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
5/9/2018 An lisis para construir el algoritmo del Factorial y otras Series - slidepdf.com
http://slidepdf.com/reader/full/analisis-para-construir-el-algoritmo-del-factorial-y-otra
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 multiplicación. Puede
parecer obvio pero es clave para la resolución del problema, sobretodo la palabra acumular . La
diferencia también 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 código:
Pseudocódigo Visual C++
Entero i ← 1, acum ← 1Mq(i ≤ n)
.
.
.Instrucciones...i ← i + 1
Fin_Mq
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
iteración, ahora si vemos la definición de la productoria nos damos cuenta que tiene una función
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
operación principal de nuestro algoritmo:
Pseudocódigo Visual C++
Entero i ← 1, acum ← 1Mq(i ≤ n)
acum ← acum x ii ← i + 1
Fin_Mq
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:
Pseudocódigo Visual C++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
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;
}
5/9/2018 An lisis para construir el algoritmo del Factorial y otras Series - slidepdf.com
http://slidepdf.com/reader/full/analisis-para-construir-el-algoritmo-del-factorial-y-otra
Dicho esto repasemos los pasos que seguimos:
1) Identificamos el tipo de serie (Sumatoria o Productoria).
2) Hallamos el valor inicial y final, y su incremento.
3) Dependiendo del tipo de series, inicializamos el valor ( 0 ó 1)
4) Hallamos la función que rige la serie
5) Esta la operamos (sumar o multiplicar) con nuestro acumulador
6) 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.
Andrés A. Pérez L.