所以我很难和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).
所以我很难和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).
不要将皮亚诺数字视为数字而是符号。
意识到偶数 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).