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 は 1 になるはずですが、A=< BI で「引数が十分にインスタンス化されていません」というエラーが発生します。なぜ、どのように修正するのですか?

私もこれを見つけましが、私はPrologに非常に慣れていないので、どこでエラーが発生したのか、なぜ引数がそこでインスタンス化されなかったのかわかりません。(他にも同様の投稿がたくさんありますが、他の少し異なるプログラムとあなたのプログラムを関連付けるのは難しいです。)

4

1 に答える 1

1

最初のルールヘッドにタイプミスがあります:Listの代わりにList1。SWI-Prologを使用する場合、その構文強調表示機能は、そのような問題を見つけるのに役立ちます。

ここで編集すると、私が何を意味するのかがわかります List1とListが強調表示された画像

修正後のテスト:

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