我的Prolog数据库中有这样的数字:
number(1).
number(2).
number(3).
number(4).
我想创建一个递归规则或任何规则,如果它不需要递归。我希望能够在此规则中输入一个数字,并且所有数字都应该打印到该数字。
例如,如果我说print_until(3)
。
它应打印出1,2,3
答案 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.
我不确定这是如何映射到您的实际问题的。 :)