【发布时间】:2021-04-01 18:59:07
【问题描述】:
这是我的代码,问题是,列表的最后一个元素不是绝对值。有人可以帮忙吗?
maxlist( [X], X ).
maxlist( [X,Y|Rest], AbsMax ) :-
abs( [X], AbsX ),
maxlist( [Y|Rest], AbsMaxRest ),
max( AbsX, AbsMaxRest, AbsMax ).
max( X, Y, X ) :- X >= Y.
max( X, Y, Y ) :- X < Y.
abs( [X], Y ) :-
X < 0 -> Y is -X ; Y = X.
对于这样的列表:
maxlist( [-4110,-11,-885,-45,-154,-995] , X )
我得到X = 4110,但最后一项
maxlist( [-995,-11,-885,-45,-154,-4110], X )j
我得到了X = 995,而我应该得到4110。
【问题讨论】:
-
现在解决了。
-
最大列表([X],X)。 maxlist([X,Y|Rest],AbsMax) :- abs(X,AbsX), abs(Y,AbsY), maxlist([AbsY | Rest],AbsMaxRest), max(AbsX,AbsMaxRest,AbsMax)。 max(X,Y,X) :- X>= Y. max(X,Y,Y) :- X Y 是 -X ; Y = X。
-
如果您已经解决了,请随时回答您自己的问题。甚至将其标记为已接受的答案(尽管您不会因此获得任何声誉积分)。这样做可以帮助其他人看到您的问题和解决方案。
标签: prolog absolute-value