1

这是我的代码:

getMin([Y|List1],X):-
    getMin(List, Y, X).

getMin([A|List],B,X):-
        A=<B,
        getMin(List,A,X);
        B=<A,
        getMin(List,B,X).
getMin([],X,X).

据我所知,当输入 getMin/3 A 时,A 应该是 1,但在 A=< BI 时会出现“参数没有充分实例化”错误。为什么以及如何解决它?

我也发现了这一点,但由于我对 Prolog 很陌生,我不知道他们到底在哪里得到了错误,以及为什么没有在那里实例化参数。(还有很多其他类似的帖子,但很难在其他有点不同的程序和你的程序之间建立联系。)

4

1 回答 1

1

第一个规则头中有一个错字:List1 而不是 List。如果您使用 SWI-Prolog,它的语法高亮功能将帮助您发现此类问题。

在这里编辑你可以明白我的意思 突出显示 List1 和 List 的图像

测试,修正后:

?- getMin([4,2,6,1,3],X).
X = 1 ;
false.
于 2012-07-28T08:29:05.293 回答