Сохранение значений в конце рекурсии PROLOG - PullRequest
0 голосов
/ 05 мая 2020

У меня есть простая программа пролога, которая должна находить все полные квадраты в списке и выводить их в новый список со счетчиком (perfect_squares / 3).

Вот мой текущий код

is_square(X) :- floor(sqrt(X))^2 =:= X.

perfect_squares(X,Y,Z) :-
   perfect_square(X,Y,Z)
perfect_square([],Y,Z).
perfect_square([H|T],Y,Z) :-
    is_square(H),
    O= [H|Y],
    length(O,F),
    perfect_square(T,O,F).
perfect_square([H2|T2],Y,Z):-
    perfect_square(T2,Y,Z). 

Результатом является пустой список (Y) [], кажется, что значения не сохраняются в конце рекурсивного l oop. Я не уверен, как go сохранять значения без использования глобальных переменных.

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