我正在关注 Prolog Tutorial 来学习 Prolog。

这段代码在 REPL 中加载 factorial 程序,并从 factorial 中获取 What 函数的结果。


true.


factorial(0,1).

factorial(A,B) :-
           A > 0,
           C is A-1,
           factorial(C,D),
           B is A*D.

>true.


What=3628800

现在我想在程序中打印结果并将其作为脚本执行:
factorial(0,1).

factorial(A,B) :-
           A > 0,
           C is A-1,
           factorial(C,D),
           B is A*D.

main:-
    factorial(10, var).



什么都没打印出来。所以我将 write(var). 添加到 main :
main:-
    factorial(10, var).
    write(var).

得到错误:



如何在执行期间打印出变量值?

最佳答案

在定义谓词时,不应有“.”除非你结束它。您应该使用“,”来代替。
正确的代码是——
主要的:-
阶乘(10,Var),
写($Var)。
还要注意变量。在 prolog 中,您应该以大写形式键入变量的名称,否则,它们将被视为谓词。另请参阅在使用 write predicate 打印 Var 时,我在 Var 之前使用了 $。如果 $ 符号不存在,write 函数将打印 Var 的内存位置而不是它的值

关于Prolog:在执行期间打印出变量的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37089753/

10-10 03:26
查看更多