SWI-prolog 中的自然数递归过程

发布于 2024-11-13 19:43:43 字数 517 浏览 5 评论 0原文

我的自然数的下一个过程是 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). 但它给了我错误:超出本地堆栈

问题是什么?谢谢。

I have the next procedure for natural number is SWI-prolog:

natural_number(0).
natural_number(s(X)) :- natural_number(X).

Now I want to do a recursive call, that stop when we arrive to 0.

My natural number is represented by - s(0)=0, s(s(0))=1, s(s(s(0)))=2, etc

So I define:

recommend(A, B, natural_number(0)) :-
    dosomeFINITEfunction (a,b).
recommend(a,b,mynumber):-
    dosomeFINITEfunction(a,b),
    recommend (a,b, natural_number(mynumber)).

and call with: 3,5,s(0).
But it gives me the error: out of local stack.

What is the problem? Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤慢歌 2024-11-20 19:43:43
natural_number(s(0), 0).
natural_number(s(s(X)), N) :- natural_number(s(X), S), N is S + 1.
natural_number(s(0), 0).
natural_number(s(s(X)), N) :- natural_number(s(X), S), N is S + 1.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文