Yo tengo una duda, se que el factorial de 3 es 6 pero su código no lo entendí muy bien, por que el mismo durante la explicación va diciendo "es obvio", pero no explica linea por linea de código, redactare lo que entendí "linea por linea" de lo que el escribió y ustedes diganme si estoy bien o mal por favor.
Linea 1 function factorial (num) Linea 2 { Linea 3 var fac = 1; Linea 4 for(num;num>0;num--) Linea 5 fac = fac *num; Linea 6 return fac; Linea 7 } Linea 8 var resultado = factorial(3); Linea 9 alert(resultado);
Tratare de redactar lo mejor posible con puntos y comas para que se entienda.
En la linea 8, la variable resultado es igual a factorial y dentro almacena el valor de "3", por lo tanto, en la linea 1 num = 3(hasta ahí es lo que he entendido), entonces, quiere decir que el FOR empezará de 3 hasta que sea mayor que 0(osea desde 3 hasta 1) ya que se ira descontanto de 1 en 1 por eso se le puso "num --" en mi linea 4.
Ahora pasamos a la linea 5 y 6 donde dice " fac = fac * num " , esto quiere decir que se multiplicara 13 que da como resultado 3, ese 3, ahora tomara el valor de FAC por que se le dijo "return fac; " que quiere decir que regresara el valor, y ahora será lo siguiente fac = fac(3) * num(2) y da el valor de 6, y tomara el valor de FAC, ahora será fac = fac(6)num(1) y da el valor de 6 y ahí acaba por que se le dijo en el for que num debe ser mayor a 0.
El resultado final se almacena en la variable "resultado" y al poner un alert que lleve dentro la variable "resultado" retorna el numero 6 que es el factorial de 3.
¿Lo explique bien?
De haberme equivocado en mi explicación de la redacción, por favor decidmelo, muchas gracias por leerme.