因此,在尝试使用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).
答案 0 :(得分:1)
不要将Peano数字视为数字,而应视为符号。
意识到偶数Paeno数是0
并重复模式s(s(X))
,其中X
可以是0
或模式s(s(X))
我还将0
和s(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).