2012-04-08 59 views
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?爲什麼重複不工作?

或者其他任何方式來實現這一目標?

回答

2

repeat/0可能不會做你認爲它的作用。 repeat/0創造了一個無限的選擇點。基本上使用repeat/0只是副作用謂詞。我建議你在正確理解Prolog的執行之前不要使用它(即使這樣,它也是一種無用的習慣用法)。

嘗試實現正確的遞歸(請參閱a tutorial,如果需要)。另一個好的解決方案是使用更高階的謂詞,但在獲得基本的Prolog之前我不會那樣做。