我在序言中有以下奇数和偶数生成器
even(0).
even(X) :- odd(Y), X is Y+1, X>0.
odd(1).
odd(X) :- even(Y), X is Y+1, X>1.
我想了解为什么我不能将这些函数用作测试人员,即?even(3).
这会导致无限循环。
这不是我打电话时发生的事情?even(3).
吗?
X
被实例化为3
. 尝试找到任何奇怪Y
的(从 开始0
)。发现Y=1
。现在是我不明白的部分。我不知道当它必须处理该子句时会发生什么X is Y+1
。考虑X
已经给出了,这里发生了什么?