【发布时间】:2018-07-13 17:46:53
【问题描述】:
这是我写的代码:
/* fib(X,Y) means xth term in fibonacci series is Y. */
fib(1,0).
fib(2,1).
fib(X,Y):-X1 is X-1,fib(X1,Y1),X2 is X-2,fib(X2,Y2),Y=Y1+Y2.
?-fib(6,X).
X = 1+0+1+(1+0)+(1+0+1) .
为什么我得到的结果是一个求和系列?我应该做哪些更正?
【问题讨论】:
-
Y is Y1+Y2就像你对其他算术所做的那样 -
=/2是统一术语的统一运算符。它不会计算算术表达式,除非您使用的是 Visual Prolog、Turbo Prolog 或 PDC Prolog 之类的奇怪 Prolog 之一(都是一样的东西)。