0

最初の項 (たとえばs(s(nul))(または 2)) が 2 番目の項 (たとえばs(nul)(または 1)) で割り切れるかどうかを確認する必要があります。

私がやりたいのは、与えられた項を2倍してから、その項が他の項より小さいか等しいかどうかを確認することです(等しい場合-問題は解決されます)。

これまでのところ、私はこれを得ました:

checkingIfDividable(X,X).
checkingIfDividable(X,Y) :-
    X > Y,
    multiplication(X,Y).

/* multiplication by two should occur here. 
   I can't figure it out. This solution does not work!*/
multiplication(Y):-
    YY is Y * 2,
    checkingIfDividable(X,YY).

項に 2 を掛ける方法がわかりません。何かアイデアはありますか?

4

1 に答える 1

1

ならa = n*b, n > 0、それもa = n*b = (1+m)*b = b + m*b, m >= 0

したがって、 が 、 で割り切れる場合、aもで割り切れます。ba = b+xxb

Peano エンコーディングでn = 1+mは、 と書かれてn = s(m)います。

ここから取ってください。

于 2015-10-28T09:52:07.073 に答える