在Prolog中打印递归

时间:2014-01-02 18:45:13

标签: prolog

我的Prolog数据库中有这样的数字:

number(1).
number(2).
number(3).
number(4).

我想创建一个递归规则或任何规则,如果它不需要递归。我希望能够在此规则中输入一个数字,并且所有数字都应该打印到该数字。

例如,如果我说print_until(3)。 它应打印出1,2,3

2 个答案:

答案 0 :(得分:2)

这只是一个原始版本,因此您必须关注格式化,但这对循环如何工作有点帮助:

 numbers(1).
 numbers(2).
 numbers(3).
 numbers(4).

 printuntil(X):-
      printhelper(1,X).

 printhelper(Z1,Y):-
      Z1=<Y,
      numbers(Z1),
      write(Z1),
      Z2 is Z1+1,
      printhelper(Z2,Y).

答案 1 :(得分:1)

可替换地:

numbers(1).
numbers(2).
numbers(3).
numbers(4).

print_until(N) :-
    numbers(X),
    X =< N,
    write(X), write(' '), false.
print_until(_).  % adding this clause causes `print_until` to ultimately succeed
                 % after displaying the numbers.

我不确定这是如何映射到您的实际问题的。 :)