编写一个谓词
above(L, N)
,它将生成(回溯)每个 大于给定整数L
的整数。例如,目标above(3, N)
应该 生成解决方案N = 4; N = 5; N = 6; ...
,依此类推,以便进行回溯。
如上所述。
“在回溯上生成解决方案”的一般策略也很棒。
答案 0 :(得分:3)
length(_,N), N > 3.
length(_,I), N is I + 4.
这些不是最有效的版本,但它们不需要辅助定义。
length([_,_,_,_|_],N).
可能会更快,但有点模糊。
答案 1 :(得分:1)
您需要一个包含两个子句的程序。 第一个是基本情况,对于输入数L,将输出数N与L + 1统一。 第二个子句是递归步骤,它只增加L并在/ 2之上重复调用。
above(L, NL):-
NL is L+1.
above(L, NL):-
ML is L+1,
above(ML, NL).