我在 Prolog 中做了一个函数:-
mean(L, M) :-
sum(L, S),
length(L, N),
M is S/N.
sum([],0).
sum([H|T],Y):-
sum(T,X),
Y is X + H.
variance([],0).
variance([H|T], M, VO):-
variance(T,M,Y),
VO is( Y + ((H-M)*(H-M))).
statsList(L, M, V1) :-
sum(L, S),
length(L, N),
M is S/N,
variance(L, M, VO),
V1 is V0/N.
出于某种原因,当我尝试计算方差时,它总是这样回答“假”:variance([1,2,3],2,VO) 或 statsList([1,2,3],M,VO)
但是,如果我仅使用它来测试它是否有效:
variance([],0).
variance([H|T], VO):-
variance(T,Y),
VO is( Y + ((H-2)*(H-2))).
有人可以告诉我哪里出错了吗?