-module(factg). -export([fg/2,compute/3]). fg(G,N) -> spawn(factg,compute,[G,N,self()]), receive Result -> Result end. compute(G,N,PIDfather) -> if (N==0) -> PIDfather!G(1); true -> spawn(factg,compute,[G,N-1,self()]), Res1 = G(N), receive Res2 -> PIDfather!(Res1 * Res2) end end.