17 lines
473 B
Plaintext
17 lines
473 B
Plaintext
100 REM FACTORIAL
|
|
110 DIM F(35): F(0)=1: REM MEMOS
|
|
120 DIM S(35): SP=0: REM STACK+PTR
|
|
130 FOR I=1 TO 13
|
|
140 : S(SP)=I: SP=SP+1: REM PUSH(I)
|
|
150 : GOSUB 200
|
|
160 : SP=SP-1: REM POP
|
|
170 : PRINT I;"! = ";S(SP)
|
|
180 NEXT I
|
|
190 END
|
|
200 REM FACTORIAL: S(SP-1) = S(SP-1)!
|
|
210 IF F(S(SP-1)) THEN 240: REM MEMOIZED
|
|
220 S(SP)=S(SP-1)-1: SP=SP+1: GOSUB 200: REM RECURSE
|
|
230 SP=SP-1: F(S(SP-1))=S(SP-1)*S(SP): REM MEMOIZE
|
|
240 S(SP-1)=F(S(SP-1)): REM PUSH(RESULT)
|
|
250 RETURN
|