1

所以我很难和Peano一起尝试,我需要一些帮助。我想知道Peano数是否是偶数,如果是,则添加:

0 + s(s(0)) = s(s(0))
0 + s(0) = No because one of the numbers odd

我到目前为止的代码:

s(0).
s(X):- 
    X.

add(0,Y,Y).
add(s(X), Y, s(Z)):- 
    add(X,Y,Z).
4

1 回答 1

1

不要将皮亚诺数字视为数字而是符号。

意识到偶数 Paeno 数是0和模式的重复在s(s(X))哪里X可以0或模式s(s(X))

我还将0s(0)视为数据,而您将s其用作谓词名称。我并不是说它不会以这种方式工作,但我不是这么想的。

谓词的名称是paeno_even,它有一个参数。

基本情况是

paeno_even(0).

下一个递归案例

paeno_even(P)

并且对 P 的处理只是删除s(s(X))了,所以在头部这样做

paeno_even(s(s(X)))

然后进行递归调用

paeno_even(s(s(X))) :-
    paeno_even(X).

几个测试来证明:

?- paeno_even(0).
true.

?- paeno_even(s(0)).
false.

?- paeno_even(s(s(0))).
true.

?- paeno_even(s(s(s(0)))).
false.

整个代码作为一个片段:

paeno_even(0).
paeno_even(s(s(X))) :-
    paeno_even(X).
于 2018-11-15T19:30:59.010 回答