序言:nat(s(s(0)))到“普通”十进制数字

问题描述 投票:1回答:1

如果在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).
prolog peano-numbers
1个回答
1
投票

基本上需要解决两种情况:

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

因此,基本情况如下:

convert(0, 0).

因此,递归情况如下:

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

其中因此是在给定N的情况下确定N1所需执行的步骤。我将其保留为练习。

© www.soinside.com 2019 - 2024. All rights reserved.