我正在尝试在SWI-Prolog中运行来自http://www.dailyfreecode.com/code/prolog-find-factorial-given-number-3072.aspx的结构化代码:
?- start.
ERROR: toplevel: Undefined procedure: start/0 (DWIM could not correct goal)
但是有3"语法错误:运算符预期"在启动时它没有运行:
{{1}}
问题出在哪里?如何运行此类代码?
答案 0 :(得分:0)
要将代码移植到Prolog,请移除predicates
部分,将goal
部分转换为标准initialization/1
指令:
:- initialization(start).
还删除clauses
部分标题。您还需要在子句主体(未测试)中移植一些调用:
start:-
write('Enter non negative number = '),
read(Num),
Result = 1.0,
find_factorial(Num,Result).
find_factorial(Num,Result):-
Num > 0,
NewResult = Num * Result,
NewNum = Num - 1,
find_factorial(NewNum,NewResult).
find_factorial(_,Result):-
write('Factorial = '), write(Result), nl.
但请注意,此代码存在严重缺陷。例如。它将计算(因子)计算与计算值的输出混合。我把这些修正留给你了。