10/02/03 08:27:50
>>588
% Prolog
nPr(N,R,X) :-
U is N - R + 1,
階乗(U,N,X).
nCr(N,R,X) :-
U is N - R + 1,
階乗(U,N,K1),
階乗(R,K2),
X is K1 // K2 .
階乗(M,N,1) :- M > N,!.
階乗(M,N,X) :-
M2 is M + 1,
階乗(M2,N,Y),
X is M * Y.
階乗(0,1) :- !.
階乗(1,1) :- !.
階乗(N,X) :-
N2 is N - 1,
階乗(N2,Y),
X is N * Y,
asserta((階乗(N,X) :- (!))) .