算术平均/均值的Prolog递归实现
我试图实现一个递归函数来计算算术平均/均值的Prolog递归实现,prolog,average,Prolog,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
中给定列表的算术平均值,基于以下公式:
数据库:
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
(基本情况是一个好地方)。切换最后两个子句的顺序;Prolog需要实例化算术表达式中的所有变量,然后才能满足is
另外,您还需要在某个地方提供
N
(基本情况是一个好地方)。非常感谢您,在将基本情况重新定义为avg([],0,0)之后,它现在可以工作了。
并将的行重新切换为和Nnew
!非常感谢,在将基本情况重新定义为avg([],0,0)。
并重新切换和Nnew的行之后,它现在可以工作了!