Foros del Web » Programando para Internet » Javascript »

Calculo del factorial con la estructura for

Estas en el tema de Calculo del factorial con la estructura for en el foro de Javascript en Foros del Web. Hola a todos! Estoy intentando aprender JavaScript por mi cuenta siguiendo el manual de www.librosweb.es y tengo dudas con uno de los ejercicios resueltos. Me ...
  #1 (permalink)  
Antiguo 18/03/2013, 04:27
 
Fecha de Ingreso: marzo-2013
Ubicación: Cáceres (España)
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Calculo del factorial con la estructura for

Hola a todos!

Estoy intentando aprender JavaScript por mi cuenta siguiendo el manual de www.librosweb.es y tengo dudas con uno de los ejercicios resueltos.

Me piden calcular el factorial de un número entero que debe introducir el usuario, el código que funciona es el siguiente:

Código Javascript:
Ver original
  1. var numero = prompt("Introduce un número entero para calcular su factorial");
  2. var resultado = 1;
  3.  
  4.     for(var i=1; i<=numero; i++) {
  5.         resultado *= i;
  6.     }
  7.    
  8.     alert(resultado);

Por más que intento seguir el funcionamiento, no soy capaz de entender cómo llega a calcular el resultado.

Muchas gracias de antemano por la ayuda.
  #2 (permalink)  
Antiguo 18/03/2013, 06:45
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años
Puntos: 16
Respuesta: Calculo del factorial con la estructura for

Veamoslo paso a paso.

Lo primero que se debe saber es que es el factorial de un número. por definición matemática el favtorial se define según la siguiente fórmula:

F(x) = x*F(x-1)

lo cual para un caso por ejemplo de x=3 sería

F(3) = 3 * F(2)
F(2) = 2 * F(1)
F(1) = 1

(acá no recuerdo bien la condición de término, recuerdo que por regla F(0)=1 pero no recuerdo si se termina en F(0) o en F(1))

Según el ejemplo anterior y reemplazando de abajo hacia arriba tendremos:

F(3) = 3 * 2 * 1 = 6 ==> 3! = 6

Teniendo claro el concepto matemático, podemos proceder a estudiar el código que presentas:

En la primera línea simplemente se solicita al usuario que ingrese el número del cual quiere obtener el factorial

En la segunda línea, tenemos un acumulador (muy usado normalmente en la programación, como cont para la suma e inicia en 0 (el neutro aditivo) y acum para la multiplicación e inicia en 1 (el neutro multiplicativo)

Luego tenemos un for (un ciclo) que repite para todo 1<=i<=N (donde N es el número que se le solicitó al usuario en la primera línea) la operación

resultado *= i

Esto es utilizado en algunos lenguajes de programación como una forma abreviada de escribir

resultado = resultado*i

Finalmente, se envía un alert con el resultado de la operación y así mostrarlo al usuario.

Veamos una traza de este ciclo para un N=3 (mismo caso usado en la definición matemática)

1º iteración del ciclo tenemos:
resultado = 1 (definido en la segunda línea de código)
i = 1
resultado = resultado * i = 1 * 1 = 1

2º iteración del ciclo tenemos:
resultado = 1 (de la iteración anterior)
i = 2 (segunda iteración incrementa el valor de i)
resultado = resultado * i = 1 * 2 = 2

3º iteración del ciclo tenemos:
resultado = 2 (de la iteración anterior)
i = 3 (tercera iteración incrementa nuevamente el valor de i)
resultado = resultado * i = 2 * 3 = 6

Se sale del ciclo en cuanto a que 4(incremento del i)>3
Se imprime por pantalla el contenido de resultado, es decir, el valor 6 correspondiente a 3!

Espero mi explicación te aclare un poco tu duda.

Saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #3 (permalink)  
Antiguo 19/03/2013, 05:14
 
Fecha de Ingreso: marzo-2013
Ubicación: Cáceres (España)
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Calculo del factorial con la estructura for

Muchas gracias! una estupenda explicación del funcionamiento.

Me perdía un poco en el funcionamiento del código.

Etiquetas: calculo, estructura, factorial, funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:56.