! ! Example of a recursive procedure. ! ! input to "fact": *n* ! output from "fact": *n_fact* ! INTEGER n n_fact prev_fact ; :: >>n<< ; IF n 1 = THEN EVALUATE n_fact := 1 ; ELSE EVALUATE n := n 1 - ; ! Here, "fact" calls itself PROCEDURE fact ; fact :: <> >>prev_fact<< ; EVALUATE n_fact := n 1 + prev_fact * ; ENDIF ; :: <> ; QUIT " Recursive procedure *fact* XREF " .