本文介绍了SWI-prolog&中的自然数递归程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对自然数的下一个过程是SWI-prolog:

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

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

现在我想进行一次递归调用,当我们到达0时停止.

Now I want to do a recursive call, that stop when we arrive to 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.

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

出什么问题了?谢谢.

推荐答案

natural_number(s(0), 0).
natural_number(s(s(X)), N) :- natural_number(s(X), S), N is S + 1.

这篇关于SWI-prolog&中的自然数递归程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-25 21:29