Factorial
Calcular el factorial de un n煤mero.
Esta es una tarea muy sencilla que se puede resolver de manera recursiva e iterativa.
En este caso vamos a ver la forma recursiva, la m谩s simple de implementar.
java
public int factorial(int n) {if (n == 0) {return 1;}return n * factorial(n - 1);}
Funciones de ayuda
Vamos a utilizar la funci贸n ya programada de multiplicaci贸n que nos permite multiplicar los numeros contenidos en los registros RB y RC.
En el acumulador vamos a guardar tanto el numero a realizar el factorial tanto como el resultado.
C贸digo final
INISP EEEE
MOV 3, AC # 3!
CALL TFFACTORIAL
FIN
# define fact(AC)
TFFACTORIAL CMP 1
BEQ T_BASE
PUSH # X
SUB 01 # AC = X-1
CALL TFFACTORIAL # fact(X-1)
MOV AC, RC
POP
MOV AC, RB # X
CALL TFMULT # X * fact(X-1)
JMP TFFACTORIAL_RET
T_BASE MOV 1, AC # base case
TFFACTORIAL_RET RET
# define multiply(RB, RC)
TFMULT MOV RB, AC
PUSH
TSTART MOV RC, AC
CMP 01
BEQ TFIN
POP
ADD RB
PUSH
MOV RC, AC
SUB 01
MOV AC, RC
JMP TSTART
TFIN POP
RET