私の仕事は次のとおりです。自然項の量で正の整数の分割数を見つけます。例: N=5。5: {1,1,1,1,1}, {2,1,1,1}, {2,2,1}, {3,1,1}, {3,2} であるため、答えは 7 です。 、{4,1}、{5}
私はJSで解決策を書きました:
function pcount(number, limit) {
if (limit === 0) {
if (number === 0) {
return 1;
}
return 0;
}
if (limit <= number) {
return pcount(number, limit - 1) + pcount(number - limit, limit);
}
return pcount(number, number);
}
しかし、今はPrologを使って書こうとしていますが、pcount(number, limit - 1) + pcount(number - limit, limit);
ステートメントにはいくつかの困難があります.
これが私のコードです:
PREDICATES
check(integer,integer,integer)
check(integer,integer)
CLAUSES
check(0,0,Result):-
Result=1.
check(_,0,Result):-
Result=0.
check(Number,Limit,Result):-
Limit<=Number,!,
NN=Limit-1,
RR=Number-Limit,
check(Number,NN,Result1),
check(RR,Limit,Result2),
Result=Result1+Result2.
check(A,B):-
check(A,B,X),
write(X).
%check(number, limit - 1) + check(number - limit, limit);
GOAL
check(2,2).
しかし、うまくいきません。この述部でのエラー: check(Number,Limit,Result)
。述語の 2 つの呼び出しの結果を結合するにはどうすればよいcheck(Number, Limit-1)+check(Number-Limit,Limit)
ですか?