我用Prolog编写了一个谓词fib/2来计算斐波那契数。尽管它可以工作,但它总是显示"out of local stack“,错误看起来像这样:
?- 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. 提前感谢!
发布于 2014-12-02 02:42:25
很可能是这样的顺序(谁先是鸡还是蛋),如果写成这样的话:
fib(N, NF) :-
A is N - 1,
B is N - 2,
fib(A, AF),
fib(B, BF),
NF is AF + BF.
fib(1, 1).
fib(0, 0).这个问题将会得到解决。
https://stackoverflow.com/questions/11750637
复制相似问题