我知道在prolog中我们要求的是真是假, 我们还可以进行计算,例如平均值以及谓词的外观吗?
答案 0 :(得分:4)
当然,你可以计算一个数字列表的平均值,谓词看起来像这样:
average(List, Result) :- length(List, Len), sum(List, Sum), Result is Sum / Len.
sum([], 0).
sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H.
然后你得到:
?- average([1, 2, 3], X).
X = 2.
答案 1 :(得分:3)
Prolog 不询问某些事情是否属实。这是一种常见的误解。 Prolog尝试使用程序谓词统一查询目标。如果成功,则返回对查询中出现的变量的赋值。如果它失败 - 这不应该是常见的情况 - 它返回“false”。
至于平均值,请参阅3electrologos的回答。