RosettaCodeData/Task/Evaluate-binomial-coefficients/Prolog/evaluate-binomial-coefficie...

11 lines
266 B
Prolog

binomial(N, K, 0) :- K > N.
binomial(N, K, X) :- binomial_helper(1, 1, K, N, X).
binomial_helper(R, D, K, _, R) :- D > K, !.
binomial_helper(R, D, K, N, X) :-
D =< K,
R1 is R * N / D,
D1 is D + 1,
N1 is N - 1,
binomial_helper(R1, D1, K, N1, X).