【发布时间】:2017-03-28 18:14:17
【问题描述】:
我需要写一个谓词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),将不胜感激!
提前致谢。
【问题讨论】:
标签: list prolog sum instantiation-error