私はPrologの初心者であり、この関数が数値のフィボナッチを計算するのを手伝ってほしい...最初にY=0とZ=1を追加し、次にY=ZとZ=Y+Zとそれぞれを呼び出すカウンターがXに等しくなるまでカウンターCの値をインクリメントするとき.....問題は、XがMに等しくなくてもプロローグが2番目の句を実行しないため、結果が常に1に等しいことですが、理由はわかりません....。
X:計算されるフィボナッチY:フィボナッチ数列の最初の数Z:フィボナッチ数列の2番目の数C:初期値が0のカウンター
T:Y + Z
predicates
fib_tail(integer,integer, integer,integer, real)
clauses
fib_tail(X,Y , Z,M, T):- X=M,T = Y + Z,!.
fib_tail(X,Y ,Z, C , T):-
T = Y + Z,
NY = Z,
NZ = Y + Z,
NC = C + 1,
fib_tail(X, NY, NZ, NC, NT).
goal
fib_tail(5 ,0 ,1 ,0, T)