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.
[code language=”text”]
factorial(0,1).
factorial(A,B) :-
A > 0,
C is A-1,
factorial(C,D),
B is A*D.
[/code]
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.
[code language=”text”]
?- 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 .
[/code]
Search within Codexpedia

Search the entire web
