我想做一个谓词返回一个数字分隔符的列表。 示例:72 = 2 * 2 * 2 * 3 * 3。序言:除数
prdel(A,[],_):-
A is 1.
prdel(P,[D|L],D):-
0 is mod(P,D),
P1 is P/D,
prdel(P1,L,D).
prdel(P,L,D):-
D1 is D+1,
prdel(P,L,D1).
这个工作并返回正确的列表。问题在于它不会在那之后停止,但是如果我按下空格,会一遍又一遍地返回相同的列表(我很抱歉,当您使用相同的谓词来获得不同的答案时,我不知道英语中的术语)。我希望它在第一次后停止。
我试图编辑最后那个样子,
prdel(P,L,D):-
D1 is D+1,
D1<P,
prdel(P,L,D1).
,但现在它只返回错误,而不是名单。
编辑:
我正在寻找一个没有削减的答案。
'使用相同的谓词来获得不同的答案':通过解决方案回溯 – CapelliC 2014-11-20 22:12:00