1
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.

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

或任何其他方式来实现这一目标?

4

1 回答 1

2

repeat/0可能不会像您认为的那样做。repeat/0创造了无限的选择点。基本上使用的repeat/0只是副作用谓词。我建议您在正确理解 Prolog 执行之前不要使用它(即使那样,它也是一种无用的习语)。

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

于 2012-04-08T23:30:29.117 回答