小红与小丽两人有N个苹果, 编写一个Prolog程序, 列出所有可能的分配方式.
思路,
1). 我们可以先可以生成一个从0至N的一个列表
2). 递归遍历上面的列表, 用N去减列表元素
3). 完结
以下程序在SWI-Prolog通过
%分苹果
genlist(X, Y, [X|L]):-
X < Y,
X1 is X + 1,
genlist(X1, Y, L).
genlist(X, X, [X]).
calc(X, [Y|L]):-X >= Y, Z is X - Y, write([X, Y, Z]), calc(X, L).
solver(X):-genlist(0, X, L), calc(X, L).