【问题标题】:How to find nth fibonacci term in prolog?如何在序言中找到第 n 个斐波那契项?
【发布时间】:2018-07-13 17:46:53
【问题描述】:

这是我写的代码:

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

为什么我得到的结果是一个求和系列?我应该做哪些更正?

【问题讨论】:

  • Y is Y1+Y2 就像你对其他算术所做的那样
  • =/2 是统一术语的统一运算符。它不会计算算术表达式,除非您使用的是 Visual Prolog、Turbo Prolog 或 PDC Prolog 之类的奇怪 Prolog 之一(都是一样的东西)。

标签: prolog fibonacci


【解决方案1】:

当它应该是“是”时,你正在使用 + 号进行求和。在 prolog 中,正确的代码是:

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.

【讨论】:

    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 2014-02-22
    • 2022-12-10
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多