Prolog最小功能

时间:2017-05-05 18:31:39

标签: prolog

我想开发一个评估列表并找到最小值的函数。我做了:

minimum([X],X).
minimum([X|Y],N) :- minimum(X,N), X < N.
minimum([X|Y],N) :- minimum(Y,N), X > N.

看来第二和第三条规则似乎是错误的,因为它说错了。

我以为是因为我递归调用最小值(X, N )并且出错了所以我查了一下:

minimum([X],X).
minimum([X|Y],N) :- minimum(X,X), X < N.
minimum([X|Y],N) :- minimum(Y,Y), X > N.

但是它也是一样的。有人可以解释我这是如何表现的,并给我一个关于我可以解决这个问题的线索!谢谢你的时间。

1 个答案:

答案 0 :(得分:-1)

在您的最低定义中,参数是列表

在第二行调用最小值时

minimum([X|Y],N) :- minimum(X,X), X < N.

注意到

minimum(X,X)

您使用而不是列表来调用它。这是第三行中的同样问题。希望有所帮助。