【发布时间】:2020-07-03 15:58:27
【问题描述】:
定义谓词 summy(List, Limit, N),其中 List 是绝对值数字的列表,N 是值小于 Limit 的 List 列表中这些数字的总和。
这就是我所拥有的: *
abx([],[]).
abx([H|T], [H|T1]):-
H >= 0,!,
abx(T,T1).
abx([M|T], [M1|T1]):-
M < 0,
M1 is M * (-1),
abx(T,T1).
summy([], [], []).
summy([H|T], L, N):-
abx([H|T], [X|Y]),
X < L,
sumlist([X|Y], N).
如果我运行示例,它会显示 X=26,而不是 X=11。
【问题讨论】:
-
你尝试了什么,什么不起作用?
-
我遇到了 X
-
好吧,您只是在过滤“第一个”项目。在
X < L的情况下,它将汇总整个列表。否则,谓词将失败。
标签: prolog