如何在序言中找到第n个斐波那契项?

问题描述 投票:0回答:1

这是我编写的代码:

/* 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) .

为什么我要得到一个求和序列的结果?我应该进行哪些更正?

prolog fibonacci
1个回答
0
投票

您应使用+号进行求和,当其应为“ is”时。在序言中,正确的代码将是:

fib(1,0).                     
fib(2,1).
fib(X,Y):-X1 is X-1,fib(X1,Y1),X2 is X-2,fib(X2,Y2),Y is Y1+Y2.

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.