У меня следующая процедура для натурального числа - это SWI-пролог:
natural_number(0).
natural_number(s(X)) :- natural_number(X).
Теперь я хочу сделать рекурсивный вызов, который останавливается, когда мы приходим к 0.
Мое натуральное число представлено как - s(0)=0, s(s(0))=1, s(s(s(0)))=2, etc
Итак, я определяю:
recommend(A, B, natural_number(0)) :-
dosomeFINITEfunction (a,b).
recommend(a,b,mynumber):-
dosomeFINITEfunction(a,b),
recommend (a,b, natural_number(mynumber)).
и позвоните по номеру: 3,5,s(0).
Но это дает мне ошибку: out of local stack
.
В чем проблема? Спасибо.