Генерация всех пар, которые суммируются с данным числом - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь сгенерировать все пары X, Y, которые суммируются с данным числом Z, используя следующие предикаты:

genN(0).
genN(X) :- 
    genN(Xprev), 
    X is Xprev + 1.

sum2(X, Y, Z) :- 
    X + Y =:= Z.

allSum2(X, Y, Z) :- 
    genN(X), 
    X < Z, 
    genN(Y), 
    Y < Z, 
    sum2(X, Y, Z).

Я использую
genN для генерации всех натуральных чисел
sum2 проверяет, заданы ли 3 числа X, Y, Z, затем X + Y = Z.

Тогда логика allSum2 заключается в
генерации всех пар X и Y таким образом, чтобы X и Y были меньше, чем Z и
, чтобы проверить, суммируются ли они доZ.

К сожалению, я застрял в генерировании бесконечного количества Ys, и я не понимаю, почему.

Может кто-нибудь объяснить это мне?

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