Prolog 为什么不工作?

Prolog 为什么不工作?,prolog,Prolog,我想用Col+1的增量调用calculateSum,直到Col1为5 或者任何其他方法来实现这一点?重复/0可能不会像您认为的那样重复/0创建无限多个选择点。基本上,repeat/0的使用只是副作用谓词。我建议您在正确理解Prolog执行之前不要使用它(即使这样,它也是一种无用的习惯用法) 尝试实现一个适当的递归(如果需要的话)。这里的另一个好的解决方案是使用高阶谓词,但在获得基本Prolog之前,我不会这样做 genVertex(List,Row,Col,Result) :- Col1

我想用Col+1的增量调用calculateSum,直到Col1为5


或者任何其他方法来实现这一点?

重复/0
可能不会像您认为的那样<代码>重复/0创建无限多个选择点。基本上,
repeat/0
的使用只是副作用谓词。我建议您在正确理解Prolog执行之前不要使用它(即使这样,它也是一种无用的习惯用法)

尝试实现一个适当的递归(如果需要的话)。这里的另一个好的解决方案是使用高阶谓词,但在获得基本Prolog之前,我不会这样做

genVertex(List,Row,Col,Result) :-
   Col1 is Col,
   repeat,
   (Col \= Row ->   
   calculateSum(List,List,Row,Col1,Y),write(Y),write('\n'),
   Result = [Y|Tail]
   ;Result = Tail
   ),
   Col1 is Col1 + 1,
   Col1 == 5.