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?
还是以其他方式实现这一目标?
答案 0 :(得分:2)
repeat/0
可能不会按照您的想法行事。 repeat/0
创造了无限的选择点。基本上使用repeat/0
只是副作用谓词。我建议你不要使用它,直到你正确理解Prolog执行(即便如此,它也是一种无用的习语)。
尝试实现正确的递归(如果需要,请参阅a tutorial)。这里另一个好的解决方案是使用更高阶的谓词,但在获得基本的Prolog之前我不会这样做。