我正在尝试实现一个递归函数来计算Prolog中给定列表的算术平均值,基于以下公式:
Source: Recursive Arithmetic Average
数据库:
avg([],0,_).
avg([X|L],Anew,Nnew) :-
avg(L,A,N),
Anew is (N * A + X) / Nnew,
Nnew is N+1.
查询:
?- avg([5.0, 6.0, 7.0, 8.0], A, N).
预期输出:
A = 6.5
不幸的是,我停留了很长时间,在尝试了几种变体之后,现在出现以下错误:
Arguments are not sufficiently instantiated
我非常感谢任何提示,链接,参考等!
切换最后2个子句的顺序; Prolog需要在满足is
之前实例化算术表达式中的所有变量。
此外,您将提供N
某处