0

如果第一个整数正好比第二个整数大 1,程序应该返回 true。

当前代码每次都返回 false。

如果没有 abs(XY) == 1 行,它可以检查第二个整数是否大于第一个整数,但它应该检查差值是否正好为 1。

expected output:

greater_than(succ(succ(0)),succ(0)).
yes
greater_than(succ(succ(0)),succ(succ(succ(0))))) 
no

current code :
greater_than(succ(X),0).
greater_than(succ(X),succ(Y)) :-
   abs(X-Y) == 1,
   greater_than(X,Y).
4

1 回答 1

0

给定x = succ(y) , Peanox正好比 Peano 数y大一,所以我们可以在这里写成这样:

one_greater_than(succ(X), X).

因此,鉴于第一个参数是 shape succ(X),Prolog 将致力于将函子的唯一参数与第二个谓词统一起来。succ/1

于 2018-12-06T18:21:20.617 回答