Three address code:
func begin fact
if n == 0 got L1
t1 = n-1
param t1 // first parameter required to call recursion
refparam result // another parameter which might not seem in function call but define as reference
call (fact, 2) // (name of function, no.of parameters) , 2 because of addition return parameter
t2 = n * result
return t2
L1: return 1
func end