我有谓词,显示所有小于10的数字。
small([H|T],H):- H=<10.
small([_|T],X):-small(T,X).
这很简单。但是我应该如何更改它以便我可以将每个下一个项目与第一个元素进行比较?
例如,? - 小([4,2,3,9,1,0,12],X)。将显示X = 2; X = 3; X = 1; X = 0?
答案 0 :(得分:0)
您可以在两个过程中拆分问题,一个接受第一个元素,然后将递归应用于列表的其余元素,并检查每个项是否小于或等于第一个元素:
small([M|T],X):- small1(T, M, X).
small1([H|_], M ,H):- H =< M.
small1([_|T], M, X):- small1(T, M, X).