ReefVM/examples/tail-recursion.reef
2025-10-05 22:24:43 -07:00

31 lines
368 B
Plaintext

; Tail-recursive factorial function
; factorial(n, acc) = if n <= 1 then acc else factorial(n-1, n*acc)
MAKE_FUNCTION (n acc) .factorial_body
DUP
PUSH 5
PUSH 1
PUSH 2
PUSH 0
CALL
HALT
.factorial_body:
LOAD n
PUSH 1
LTE
JUMP_IF_FALSE .recurse
LOAD acc
RETURN
.recurse:
DUP
LOAD n
PUSH 1
SUB
LOAD n
LOAD acc
MUL
PUSH 2
PUSH 0
TAIL_CALL