listsum(L, S)
如果 L 是从 1 增加到某个 n 的自然数列表(即[1,2,..,n]) ,我需要编写一个正确的谓词。现在我让它适用于这种查询,listsum(L, <any number larger than 0>)
但是当我尝试查询时,listsum([1,2,3], S)
它说参数没有充分实例化。这是我的代码:
listsum(L,S) :- listsum(L,S,1).
listsum(L, 0, A) :-
N is A-1,
N > 1,
fromTo(1, N, L). ; true iff L is the list [1,2,...,N]
listsum(L, S, A) :-
S > 0,
SA is S-A,
A1 is A+1,
listsum(L, SA, A1).
如果有人可以帮助我了解如何以两种方式进行这项工作(同样对于 L 的给定值,查询 S),将不胜感激!
提前致谢。