Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog将列表元素与Head元素进行比较_Prolog - Fatal编程技术网

Prolog将列表元素与Head元素进行比较

Prolog将列表元素与Head元素进行比较,prolog,Prolog,我有一个谓词,它显示所有小于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?您可以将问题分为两个过程,一个过程使用第一个元素,然后对列表的其余元素应用递归,并检查每个项目是否小于或等于第一个元素: small([M|T],X):- small

我有一个谓词,它显示所有小于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?

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

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

small1([H|_], M ,H):- H =< M.
small1([_|T], M, X):- small1(T, M, X).

更正:该谓词只显示一个数字,第一个数字小于10。但你通过按压迫使它后退;在提示下: