Prolog谓词在回溯上生成高于X的整数

时间:2012-04-26 15:34:50

标签: prolog

  

编写一个谓词above(L, N),它将生成(回溯)每个   大于给定整数L的整数。例如,目标above(3, N)应该   生成解决方案N = 4; N = 5; N = 6; ...,依此类推,以便进行回溯。

如上所述。

“在回溯上生成解决方案”的一般策略也很棒。

2 个答案:

答案 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).