Пролог: nat (s (s (0))) к "нормальным" десятичным числам - PullRequest
1 голос
/ 16 июня 2020

Если целые числа определены в Прологе следующим образом:

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

Как преобразовать такое число в десятичное число?

Например:

s (s (s (0)))

Вероятно, я должен добавить, что я новичок в Prolog.

EDIT: Я пробовал это так:

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

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

1 Ответ

1 голос
/ 16 июня 2020

В основном вам необходимо рассмотреть два случая:

  1. базовый случай 0, который отображается на 0; и
  2. рекурсивный случай s(X), который использует результат для X.

Таким образом, базовый случай выглядит так:

convert(<b>0</b>, <b>0</b>).

рекурсивный регистр, таким образом, выглядит так:

convert(<b>S(X)</b>, N) :-
    convert(X, N1),
    &hellip;.

где &hellip;, таким образом, шаг, который вам нужно сделать, чтобы определить N с учетом N1. Я оставляю это как упражнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...