1

如果在 Prolog 中这样定义整数:

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

如何将这样的数字转换为十进制数?

输入例如:

s(s(s(0)))

我可能应该补充一点,我对 Prolog 很陌生。

编辑:我这样试过:

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

convert(N, C) :-
    C is C + 1,
    nat(N),
    convert(N, C).
4

1 回答 1

1

基本上有两种情况需要覆盖:

  1. 映射的基本情况 ;和00
  2. 使用结果的递归情况 .s(X)X

因此,基本情况如下所示:

convert(0, 0).

因此,递归情况如下所示:

convert(S(X), N) :-
    convert(X, N1),
    ….

因此,您需要执行哪些步骤来确定Ngiven N1。我把它留作练习。

于 2020-06-16T20:38:37.757 回答