【发布时间】:2015-09-02 17:15:44
【问题描述】:
我目前正在做一个项目,我想在 Prolog 中实现辅助谓词
break_down(N, L)
其工作原理如下
?- break_down(1,L).
L = [1] ;
false.
?- break_down(4,L).
L = [1, 1, 1, 1] ;
L = [1, 1, 2] ;
L = [1, 3] ;
L = [2, 2] ;
L = [4] ;
false.
对于任何正整数 N 以此类推。
我已经尝试并实现了一个只生成第一个结果的代码,我无法得到其余的结果,这是我的代码
break_down(1,[1]).
break_down(N,L):-
N>0,
N1 is N-1,
break_down(N1,L1),
append(L1,[1],L).
只生成第一个输出结果:
L = [1, 1, 1, 1] ;
任何建议如何编辑我的代码以获得其余部分?
【问题讨论】:
-
根据问题陈述,您需要在某处添加一些数字,但您的解决方案不会添加任何数字。它只是追加。