このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/670
#  [1] 授業単元:プログラミング実習  
#  [2] 問題文(含コード&リンク):nとrを入力して 
#  組み合わせの数nCrを求めるプログラムを作成せよ。 
#  

nCr(N,R,X) :-
      階乗(N,U1),
      V is N - R,
      階乗(V,U2),
      階乗(R,U3),
      X is U1 // U2 // U3.

階乗(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) :- (!))).