我正在关注 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/