0

私はプロローグでかなり新しいです。フィボナッチ数列の n 番目の項と合計を見つけようとしています。

/* Fibonacci */

predicates
    fibonacci(integer, integer, integer)

clauses
fibonacci(1,1,1):-!.
fibonacci(2,1,2):-!.

fibonacci(N, Term, Sum):-
    N1 = N - 1,
    N2 = N - 2,
    fibonacci(N1, Term1, Sum1),
    fibonacci(N2, Term2, Sum2),
    Term = Term1 + Term2,
    Sum = Term + Sum.

ただし、Turbo Prolog でコンパイル中に 420 PROLOG.ERR が見つからない

フィボナッチ(N2, Term2, Sum2),

なぜこうなった?どんな助けでも大歓迎です。前もって感謝します。

4

3 に答える 3

2

それは本当にエラーメッセージ全体ですか?が欠けているとは言いませんか?

編集: 以下のコメントによると、Turbo Prolog=は実際に に対応しis/2ているため、Prolog に適した以下のコメントは適用されません。元の質問に対するコメントによると、ひどいエラー メッセージは、Sum2.

clausesいずれにせよ: Turbo Prolog の部分が標準の Prolog に対応すると仮定するとN1、 、N2TermおよびのいずれもSumプログラム内の整数にはなりません。算術評価ではなく=、統一を意味します。を呼び出すと、呼び出しの中で は、整数 2ではなく、解釈されていない項 にバインドされます。 の他の使用法についても同じことが言えます。fibonacci(3, Term, Sum)N13 - 1=

算術部分では、 : などを使用する必要があります。is/2これにより、右側が算術式として評価され、実際にこれらの変数が整数にバインドされます。N1 is N - 1N2 is N - 2

よく考えてみないと、これが の有用な計算になるかどうかはわかりませんTerm

于 2017-01-05T16:40:03.877 に答える