如果在Prolog中这样定义整数:
nat(0).
nat(s(X)) :- nat(X).
如何将这样的数字转换为十进制数字?
例如,输入:
s(s(s(s(0)))
我可能应该补充一点,我对Prolog非常陌生。
编辑:我这样尝试过:
nat(0).
nat(s(X)) :- nat(X).
convert(N, C) :-
C is C + 1,
nat(N),
convert(N, C).
基本上需要解决两种情况:
0
的0
;和s(X)
,它使用X
的结果。因此,基本情况如下:
convert(0, 0).
因此,递归情况如下:
convert(S(X), N) :-
convert(X, N1),
….
其中…
因此是在给定N
的情况下确定N1
所需执行的步骤。我将其保留为练习。