我写了一个谓词 fib/2 来计算 Prolog 中的斐波那契数。虽然它有效,但它总是说“超出本地堆栈”,错误看起来像:
?- fib(10, F).
F = 55 ;
ERROR: Out of local stack
我的谓词如下:
fib(0, 0).
fib(1, 1).
fib(N, NF) :-
A is N - 1,
B is N - 2,
fib(A, AF),
fib(B, BF),
NF is AF + BF.
任何人都知道这是为什么以及如何解决它以获得以下内容::
% or the search might stop immediately, without pressing space.
?- fib2(10, F).
F = 55 ;
false.
提前致谢!