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 回答