繁体   English   中英

在序言中查找列表的最大值和最小值

[英]To find maximum and minimum of a list in prolog

domains
    list = integer*//shows error in swish saying "syntax error operator
                     expected"
    Max = integer
predicates
    maximum_no(list,integer)
clauses
    maximum_no([],Max):-
        write("Maximum No in List is:: ",Max),nl.
    maximum_no([H|T],Max):-
        H>Max,
        N = H,
        maximum_no(T,N).
    maximum_no(L,Max):-
        maximum_no(L,Max).

有人可以告诉我如何解决这个错误吗? 我确实发现代码是正确的,但它仍然说错误? 我还必须编写代码来查找列表的最小数量!

为了找到列表的最大值,以下单独工作:

% the maximum of a list of one element is this element
maximum_no([X],X).

% the maximum of a list is either the head or the maximum of the tail
% depending on if the head is lower than the max of the tail.
maximum_no([H|T],Max):-
    maximum_no(T,Max),
    H @< Max.
maximum_no([Max|T],Max):-
    maximum_no(T,M),
    M @< Max.

然后,找到列表的最小值应该不会太复杂。

这应该工作。 对于最低限度,只需进行适当的更改。

maximum_no([H|T],Max):- maximum_no(T,MX), Max 为 max(H,MX)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM