Turbo Prolog:420 PROLOG.ERR失踪

时间:2017-01-05 15:50:01

标签: prolog turbo-prolog

我是Prolog的新手。我正试图找到斐波那契数列的第n项和总和。

/* Fibonacci */

predicates
    fibonacci(integer, integer, integer)

clauses
fibonacci(1,1,1):-!.
fibonacci(2,1,2):-!.

fibonacci(N, Term, Sum):-
    N1 = N - 1,
    N2 = N - 2,
    fibonacci(N1, Term1, Sum1),
    fibonacci(N2, Term2, Sum2),
    Term = Term1 + Term2,
    Sum = Term + Sum.

然而,在Turbo Prolog中进行编译时,我在

上缺少420 PROLOG.ERR
  

斐波纳契(N2,Term2,Sum2),

为什么会这样?任何帮助表示赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:1)

这真的是整个错误消息吗?它没有说缺少什么

  

编辑:根据下面的评论,Turbo Prolog的=确实如此   对应is/2,所以下面的评论是正确的   Prolog,不申请。根据对原始问题的评论,   可怕的错误消息可能是Sum2的单例警告。

在任何情况下:假设Turbo Prolog的clauses部分对应于标准Prolog,N1N2Term和{{1}都不对应将是您程序中的整数。 Sum表示统一,不是算术评估。如果您拨打=,则在通话fibonacci(3, Term, Sum)内将绑定到未解释的字词N1而不是绑定到整数2.对于您的其他使用3 - 1

对于算术部分,您将需要使用=is/2N1 is N - 1等。这将评估右侧作为算术表达式并实际将这些变量绑定到整数。

如果不考虑它太难,我不清楚这是否会导致N2 is N - 2的有用计算。

答案 1 :(得分:1)

我猜涡轮不能找到一些带有错误描述的文件。看起来像tp安装不正确?纠正这一点,你会收到更多信息。

看看 http://rosettacode.org/mw/index.php?title=Fibonacci_sequence&action=edit&section=399 并修改它不仅可以找到Nth,还可以找到Sum。

你会得到类似的东西: ----

% fibsum(i, n, fib(i-2), fib(i-1), fib(i), sum(i-1), sum(i))
fibsum(N, N, Fi2, Fi1, F, Si1, S) :-
    F is Fi2 + Fi1,
    S is Si1 + F.
fibsum(I, N, Fi2, Fi1, F, Si1, S) :-
    In is I + 1,
    Fn is Fi2 + Fi1,
    Sn is Si1 + Fn, !,
    fibsum(In, N, Fi1, Fn, F, Sn, S).

% fibs(i, fib(i), sum(i)) fibs(1, 1, 1). fibs(2, 1, 2). fibs(C, N, S) :- C > 2, fibsum(3, C, 1, 1, N, 2, S). % Generate from 3rd on

--- (几乎没有在http://swish.swi-prolog.org/上测试)

答案 2 :(得分:1)

Turbo Prolog找不到错误消息文件PROLOG.ERR。通常安装在Turbo Prolog安装目录中。

如果文件存在,请检查是否在Setup-> Directories-> Turbo Directory下正确设置了应用程序路径