Prologでは、私はMax
関数を作ったが、他の人に返す数値を比較しようとしていて、正しい数値を与えていないとわかる。私のリストは[2,2,1,2]
なので、私のmax
は2でなければなりませんが、私が見つけた最大値を2と比較すると失敗します。最大機能が正しい答えを与えていない
私のコードは次のようになります。
maximumElement([X], X).
maximumElement([H|T], MaxFound):-
maximumElement(T, MaxOfTail),
MaxFound = max(MaxOfTail, H).
私の問題は、また、私は数字を比較していますすることができどこが、呼び出されたときに、述語は、次のようになりますように、今、私はそれを変更した:
maximumElement(List, MaxFound),
checkIfTwo(MaxFound, MaxFound).
を
そして、これはそれで述語です:私はそのようにそれを比較しておりますので
checkIfTwo(2,2).
、それはよ私は同じ数字を比較しているので、私は間違っているだろうと私は奇妙なので、私はそれが私の比較や最大値の問題でなければならないと思う。あなたが使用しているため
In Prolog '='は式割り当てではありません。これは、用語統一演算子です。それは同じことではありません。算術関数、算術演算子、または 'is/2'が必要です。 – lurker
@lurker私は 'MaxFound = max(MaxOfTail、H)'を持つ 'is/2'を使ってみましたが、それでも間違った答えを出すので問題はないと思います。 –
あなたは 'MaxFound is max(MaxOfTail、H)'の代わりに – false