ReefVM/examples/tail-recursion.reef
2025-10-05 21:29:30 -07:00

29 lines
327 B
Plaintext

; Tail-recursive factorial function
; factorial(n, acc) = if n <= 1 then acc else factorial(n-1, n*acc)
MAKE_FUNCTION (n acc) #21
DUP
PUSH 5
PUSH 1
PUSH 2
PUSH 0
CALL
HALT
; Function body
LOAD n
PUSH 1
LTE
JUMP_IF_FALSE #2
LOAD acc
RETURN
; Tail recursive call
DUP
LOAD n
PUSH 1
SUB
LOAD n
LOAD acc
MUL
PUSH 2
PUSH 0
TAIL_CALL