1

10 より小さいすべての数値を示す述語があります。

    small([H|T],H):- H=<10.
    small([_|T],X):-small(T,X).

それは非常に簡単です。しかし、次のすべての項目を最初の要素と比較できるようにするには、どのように変更すればよいでしょうか?

たとえば、?- small([4,2,3,9,1,0,12],X)。X=2;X=3;X=1;X=0 と表示されますか?

4

1 に答える 1

0

問題を 2 つの手順に分けることができます。1 つは最初の要素を取り、リストの残りの要素に再帰を適用し、各項目が最初の要素以下かどうかをチェックします。

small([M|T],X):- small1(T, M, X).

small1([H|_], M ,H):- H =< M.
small1([_|T], M, X):- small1(T, M, X).
于 2013-04-04T14:05:16.147 に答える