0

假设我有这段代码:

end_sol_cell(Row,9):-
   not(findall(Value,pos_cell(Row,9,Value),[_])).
end_sol_cell(Row,Col):-
   not(findall(Value,pos_cell(Row,Col,Value),[_])),
   New_Col is Col + 1,
   end_sol_cell(Row,New_Col).

w :- end_sol_cell(1,1), end_sol_cell(2,1).

当我调用“w”时,它进入无限循环我该如何解决这个问题?

4

1 回答 1

0

我猜它不会循环切割:

end_sol_cell(Row,9):- !, /* <<< here */
   not(findall(Value,pos_cell(Row,9,Value),[_])).
end_sol_cell(Row,Col):-
   not(findall(Value,pos_cell(Row,Col,Value),[_])),
   New_Col is Col + 1,
   end_sol_cell(Row,New_Col).

但我不确定它是否正是你想要的。

再见

于 2014-06-04T16:01:28.353 回答