# prolog recursive predicate/function

A recursive prolog function/predicate. It calculates the factorial of a number.

The first factorial predicate says return 1 if the number is 0.

The second one takes two variables, A and B.

If A is greater than 0 evaluates to true.

Then decrement A by 1 and assign the result to C.

Then recursively call factorial with C and a new variable D.

The last line will be reached when A becomes 0, and the first factorial function evaluates to 1, the 1 is assigned to D. In the end, the last line will be B is 3*2*1 if the number to calculate the factorial was 3.

factorial(0,1). factorial(A,B) :- A > 0, C is A-1, factorial(C,D), B is A*D.

Assume the above code is in a file called factorial.pl, load the file in prolog console, and here are some sample calls to the factorial function.

?- factorial(0,X). X = 1 . ?- factorial(1,X). X = 1 . ?- factorial(3,X). X = 6 . ?- factorial(5,X). X = 120 . ?- factorial(10,X). X = 3628800 .

**Search within Codexpedia**

Custom Search

**Search the entire web**

Custom Search

Related Posts