我正在使用 swi-prolog 来获取给定列表中所有正整数的总和
到目前为止,这是我的代码,请帮助我解决哪里出错了
sumPos([] ,0).
sumPos([Head | Tail], X) :- Head > 0,
sumPos(Tail, N),
X is N+Head.
Run Code Online (Sandbox Code Playgroud)
为了测试我正在使用
sumPos([1,-2,3,-5], X).
Run Code Online (Sandbox Code Playgroud)
答案应该是 X=4 但我得到了错误
小智 5
当 Head 为负数时,您需要另一个可用的子句:
sumPos([Head | Tail], X) :- Head =< 0, sumPos(Tail, X).
Run Code Online (Sandbox Code Playgroud)