假设我有这段代码:
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”时,它进入无限循环怎么能解决这个问题?
答案 0 :(得分: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).
但我不确定它是否正是你想要的。
再见