首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我在Prolog Fib/2中的谓词总是说“在局部堆栈之外”?

为什么我在Prolog Fib/2中的谓词总是说“在局部堆栈之外”?
EN

Stack Overflow用户
提问于 2012-08-01 07:43:00
回答 4查看 3.3K关注 0票数 4

我用Prolog编写了一个谓词fib/2来计算斐波那契数。尽管它可以工作,但它总是显示"out of local stack“,错误看起来像这样:

代码语言:javascript
运行
复制
?- fib(10, F).
F = 55 ;
ERROR: Out of local stack

我的谓词如下:

代码语言:javascript
运行
复制
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.

任何人都知道这是为什么,以及如何修复它,以获得以下内容:

代码语言:javascript
运行
复制
% or the search might stop immediately, without pressing space.
?- fib2(10, F).
F = 55 ;
false. 

提前感谢!

EN

Stack Overflow用户

发布于 2014-12-02 02:42:25

很可能是这样的顺序(谁先是鸡还是蛋),如果写成这样的话:

代码语言:javascript
运行
复制
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).

这个问题将会得到解决。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11750637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档