1

我正在使用 SWI-Prolog 学习 Prolog。这是我在文件中的练习代码fact.pl

factorial(N,F) :- N is 0, F is 1;
              N > 0, M is N - 1, factorial(M,G), F is N*G.

当我尝试使用 加载此文件时[fact.pl],解释器给了我以下错误:

?- [fact.pl].
ERROR: Syntax error: Operator expected
ERROR: [fact
ERROR: ** here **
ERROR: .pl] .

我不确定这是怎么发生的,我很确定我所做的是标准程序加载命令。

有谁见过这个,请帮忙,谢谢。

4

3 回答 3

1

要么?- [fact].?- ['fact.pl'].应该工作

于 2012-10-04T13:23:48.403 回答
0

使用 consult(fact)consult('fact.pl')

下面是另一个简单的程序

factorial(0,1). 

factorial(N,F) :-  
   N>0, 
   N1 is N-1, 
   factorial(N1,F1), 
   F is N * F1.

the factorial of 0 is 1

the factorial of N is F if N>0 and N1 is N-1 and the factorial of N1 is F1 and F is N*F1

于 2017-08-05T19:18:51.137 回答
-1

当我编译你的程序时,它给了我以下答案。

阶乘(5,F)。F = 120 ; 错误的。

这意味着您的程序可以正常工作。

factorial(N,F) :- N is 0, F is 1,**!**;N > 0, M is N - 1, factorial(M,G), F is N*G.

包括剪切运算符(!)。然后您可以避免输出中的错误部分。

于 2012-12-17T10:46:39.127 回答