SWI prolog中的自然数&;递归过程

SWI prolog中的自然数&;递归过程,prolog,successor-arithmetics,Prolog,Successor Arithmetics,自然数的下一个过程是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,等等 所以我定义: recommend(A, B, natural_number(0)) :- dosomeFINITEfunction (a,b). recommend(a,b,mynumber):-

自然数的下一个过程是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,等等

所以我定义:

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)呼叫。
但它给了我一个错误:
出本地堆栈


有什么问题?谢谢。

有人知道答案吗?你需要更多的信息吗?汤姆,你能更准确地说出你提供的信息片段吗?我觉得这很不准确。在第二个代码段的第一条规则中,有A,B,还有A,B。这是你的代码吗?在第一条规则中你真的有自然数(0)还是有s(0)?
natural_number(s(0), 0).
natural_number(s(s(X)), N) :- natural_number(s(X), S), N is S + 1.