/* prolog tutorial  2.2 Two Factorial Definitions */

factorial(0,1). 

factorial(N,F) :-  
   N>0, 
   N1 is N-1, 
   factorial(N1,F1), 
   F is N * F1.

/*------------------------------*/

factorial(0,F,F). 

factorial(N,A,F) :-  
    N > 0, 
    A1 is N*A, 
    N1 is N -1, 
    factorial(N1,A1,F). 