【发布时间】:2019-08-12 01:30:56
【问题描述】:
返回列表中偶数和的谓词:
sumsq_even([], 0).
sumsq_even([FirstNum|RestOfNums], Total) :-
sumsq_even(RestOfNums, TotalRest),
Total is FirstNum + TotalRest :- 0 is FirstNum mod 2, % Add Firstnum if it is even
Total is TotalRest :- 1 is FirstNum mod 2. % Dont add if firstnum is odd
首先我的代码编译但我得到一个语法错误:第 4 行中的运算符优先级冲突。当我尝试查询时:
sumsq_even([1,3,5,2,-4,6,8,-7], Total).
它返回 False 而不是 Total 的值。我做错了什么?
【问题讨论】:
-
序言?那么
s标签是怎么回事?请注意您选择的标签,因为如果您放置了错误的标签,正确的人可能会忽略您的问题。另外请花一些时间阅读how to ask good questions 和this question checklist。并注意标签下方的edit链接,它可以让您编辑您的问题以改进它。请同时阅读the editing help。 -
对不起,我不小心把我的错字贴出来了。我现在已经编辑了帖子谢谢。
-
我认为你不需要使用
mod。我认为您可以使用“头/尾”[FirstNum|RestOfNums]功能来丢弃所有其他项目 -
抱歉,我之前的评论有误(已删除)。在序言中总结一个列表:stackoverflow.com/questions/9875760/…
-
感谢您的回答,但我想我必须使用 mod。如果没有它,你将如何区分奇数或偶数,因为我只想要偶数的总和?