How does the recursive function execute?
Example for the case of fact(3):
fact(3) is called, since (3<=1) is false, we do 3*fact(2), multiplication is suspended until fact(2) returns.
fact(2) is called, since (2<=1) is false, we do 2*fact(1), multiplication is suspended until fact(1) returns.
fact(1) is called, since (1<=1) is true, we return the value 1 to the suspended fact(2) computation.
When fact(1) returns 1 to fact(2), 2*1 is computed, the value 2 is returned to fact(3).
When fact(2) returns 2 to fact(3), 3*2 is computed. The fact(3) returns 6 to whoever is calling fact(3).