【发布时间】:2014-11-20 18:44:33
【问题描述】:
我想创建一个返回数字分隔符列表的谓词。 示例: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).
但现在它只返回 false 而不是列表。
编辑:
我正在寻找一个没有删减的答案。
【问题讨论】:
-
use the same predicate to get different answer:通过解决方案回溯