Prolog program to Calculate factorial of N

We know the formula for calculating n! (factorial of n)  is:

n! = n * (n-1)!

We can interpret this simple mathematical equation into a Prolog program. To do so, we must determine the basis of the recursion,

0! = 1

We will use two predicates here,

1. factorial predicate with one argument N, that will calculate and N!
2. factorial predicate with two arguments N and X. This function is recursively used. It will also calculate N!, but store it in the argument X in the process if recursion.

Code snippet given below is a sample program for the purpose.

predicates

factorial(integer,integer)
factorial(integer)

clauses

/* Base Case, 0!=1*/
factorial(0,X):-
X=1.
/* recursion for factorial */
factorial(N,X):-
NN=N-1,
factorial(NN,X1),
X=X1*N.
/*One argument function*/
factorial(N):-
factorial(N,X),
write(X).

Hope you will enjoy!

6 thoughts on “Prolog program to Calculate factorial of N”

1. wasim akram says:

very poor

Like

1. nafSadh says:

What is poor?

Like

2. lomi says:

I want it by take number from user not in rule form

Like

3. Anwar says:

my friend all the inputs are Out of local stack , thank you first of all but the factorial program you made is not efficient

Like

1. nafSadh says:

Here is a interesting thing: in Prolog, such recursion unfold in a different way than structured programming languages. This code was not written to be efficient, but to be expressive in a similar way to mathematics.

Like

This site uses Akismet to reduce spam. Learn how your comment data is processed.