bc(0,N,R,R):- N>0,R is 1,!.
bc(M,0,R,R):- M>0,R is 1,!.
bc(N,N,R,R):- R is 1,!.
bc(M,N,R,R1):-
M1 is M - 1,
N1 is N - 1,
bc(M1,N1,R,R2),
bc(M1,N,R,R3),
R1 is R2+R3.
なぜ偽を返
findallがない高次のPrologバリアントを使用しています。 私たち自身のfindallの実装に関するもう1つの質問があります:Getting list of solutions in Prolog。 非効率的な実装は次のとおりです。 parent(pam, bob). %pam is a parent of bob
parent(george, bob). %george is a pa
GNU Prologで->演算子を使用しようとしていますが、可変スコープに問題があります。ここでは例です:プロローグコンソールで example(A) :-
B = A,
(B == 2 -> write(B), write(' is 2'), nl);
(write(B), write(' is not 2'), nl).
: | ?- example(2).