added file containing predicates for various math functions
This commit is contained in:
parent
7f72f62df7
commit
4d1c3d9ab2
|
@ -0,0 +1,31 @@
|
|||
% Compute the nth number in the fibonacci sequence
|
||||
fib(0, 0).
|
||||
fib(1, 1).
|
||||
fib(X, Res):-
|
||||
X1 is X - 1,
|
||||
X2 is X - 2,
|
||||
fib(X1, Tmp1),
|
||||
fib(X2, Tmp2),
|
||||
Res is Tmp1 + Tmp2.
|
||||
|
||||
% Compute the nth element of the integer factorial
|
||||
fac(0, 1).
|
||||
fac(X, Res):-
|
||||
X1 is X - 1,
|
||||
fac(X1, Tmp),
|
||||
Res is Tmp * X.
|
||||
|
||||
% Sums all integer numbers between and inclusive X and inclusive Y and writes the result to Res.
|
||||
%
|
||||
% example: sum(0, 9, X).
|
||||
% output: X = 45
|
||||
% explanation: 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 9
|
||||
sum(X, X, X).
|
||||
sum(X, Y, Res):-
|
||||
X < Y,
|
||||
X1 is X + 1,
|
||||
sum(X1, Y, Tmp),
|
||||
Res is Tmp + X.
|
||||
sum(X, Y, Res):- % if X is bigger than Y, swap the operands and call sum again
|
||||
X > Y,
|
||||
sum(Y, X, Res).
|
Loading…
Reference in New Issue