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

您可以将问题拆分为两个过程,一个过程采用第一个元素,然后对列表的其余元素应用递归,并检查每个项目是否小于或等于第一个元素:

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 回答