You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Turbo Prolog实现斐波那契数列(Fibonacci Series)代码运行报错问题

Turbo Prolog斐波那契代码报错修复方案

原代码核心问题

  • 结果变量未绑定:递归子句头定义为fibo(X,N),但计算出斐波那契结果F后没有将X与F绑定,导致自由变量报错
  • 算术运算逻辑错误:Prolog中=为项统一操作,不是算术赋值,要计算表达式结果需要使用is关键字,原代码F=F1+F2不会执行加法运算,只会尝试对复合项做统一
  • 输出逻辑位置错误:输出语句写在递归子句中,会输出大量重复的中间计算值,无法得到正确的数列输出结果
  • 参数逻辑不清晰:谓词参数的含义没有统一,调用时很容易出现参数顺序颠倒导致的逻辑错误

修复后可运行代码

predicates
% 第一个参数为斐波那契项数N,第二个参数为对应的计算结果
fibo(integer, integer)
% 输出第0项到第Max项的斐波那契数列
print_fibo(integer, integer)

clauses
% 终止条件
fibo(0, 0).
fibo(1, 1).
% 递归逻辑
fibo(N, F):-
    N > 1,
    N1 = N - 1,
    N2 = N - 2,
    fibo(N1, F1),
    fibo(N2, F2),
    F is F1 + F2.

% 遍历输出逻辑
print_fibo(Current, Max):-
    Current =< Max,
    fibo(Current, Res),
    write(Res),
    (Current = Max -> write(".") ; write(", ")),
    Next = Current + 1,
    print_fibo(Next, Max).
print_fibo(_, _).

调用示例

如果需要输出前10项(第0到第9项)斐波那契数列,执行语句:
print_fibo(0,9)
输出结果为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

内容的提问来源于stack exchange,提问作者Prashant Aghara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:18:05