【发布时间】:2014-08-27 13:16:06
【问题描述】:
我是一个初学者,我正在使用 SWI Prolog 编写一个规则来打印关于两个数字相加的所有事实。以下是代码:
addition(X,Y,Z) :- Z is X+Y.
add(X,Y):-
between(X,Y,A),
addition(X,A,Z),
writeln(addition(X,A,Z)),
X1 is X+1,
add(X1,Y).
以下是输出:
1 ?- add(1,2).
addition(1,1,2)
addition(2,2,4)
addition(1,2,3)
addition(2,2,4)
false.
如您所见,输出addition(2,2,4) 重复,而addition(2,1,3) 缺失。我在这里做错了什么??
【问题讨论】:
-
一开始就避免使用像
writeln这样的副作用。 -
add/2究竟应该是什么意思?从您写的谓词或您的描述中看不太清楚。
标签: prolog