我想开发一个评估列表并找到最小值的函数。我做了:
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.
但是它也是一样的。有人可以解释我这是如何表现的,并给我一个关于我可以解决这个问题的线索!谢谢你的时间。
答案 0 :(得分:-1)
在您的最低定义中,参数是列表和项。
在第二行调用最小值时
minimum([X|Y],N) :- minimum(X,X), X < N.
注意到
minimum(X,X)
您使用项和项而不是列表和项来调用它。这是第三行中的同样问题。希望有所帮助。