2

自然数の次の手順は SWI-prolog です。

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

何が問題ですか?ありがとうございました。

4

1 に答える 1

2
natural_number(s(0), 0).
natural_number(s(s(X)), N) :- natural_number(s(X), S), N is S + 1.
于 2011-12-02T12:34:46.587 に答える