home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / EXAMPLES.ARC / CH07EX07.PRO < prev    next >
Encoding:
Prolog Source  |  1988-06-21  |  558 b   |  26 lines

  1. /*
  2.    Turbo Prolog 2.0 Chapter 7, Example Program 7
  3.    
  4.    Copyright (c) 1986, 88 by Borland International, Inc
  5.    
  6. */
  7.    
  8. predicates
  9.    factorial(integer, real)
  10.    factorial_aux(integer, real, integer, real)
  11.  
  12. /* Numbers likely to exceed 32767 are declared as reals. */
  13.  
  14. clauses
  15.    factorial(N, FactN) :-
  16.       factorial_aux(N, FactN, 1, 1).
  17.  
  18.    factorial_aux(N, FactN, I, P) :-
  19.       I <= N, !,
  20.       NewP = P * I,
  21.       NewI = I + 1,
  22.       factorial_aux(N, FactN, NewI, NewP).
  23.  
  24.    factorial_aux(N, FactN, I, FactN) :-
  25.       I > N.
  26.