我是 Prolog 的初学者,我想帮助这个函子计算一个数字的斐波那契......第一次它添加 Y = 0 和 Z = 1 然后它调用自己与 Y = Z 和 Z = Y + Z 和每个它增加计数器 C 的值直到计数器等于 X 的时间.....问题是结果始终等于 1,因为即使 X 不等于 M,prolog 也永远不会执行第二个子句,但我不知道为什么......
X:要计算的斐波那契 Y:斐波那契数列中的第一个数字 Z:斐波那契数列中的第二个数 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)