【问题标题】:Natural number in SWI-prolog & recursive procedureSWI-prolog和递归过程中的自然数
【发布时间】:2011-06-04 14:04:20
【问题描述】:

我对自然数的下一个程序是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

有什么问题?谢谢。

【问题讨论】:

  • 有人知道答案吗?您需要更多信息吗?
  • Tom,您提供的 sn-p 能更准确一点吗?我的印象是非常不准确。在您的第二个 sn-p 的第一条规则中,有 A,B 和 a,b。是您的代码中的内容吗?你真的在第一条规则中有 natural_number(0) 还是有 s(0) ?

标签: prolog successor-arithmetics


【解决方案1】:
natural_number(s(0), 0).
natural_number(s(s(X)), N) :- natural_number(s(X), S), N is S + 1.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 2012-09-08
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多