本文介绍了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&中的自然数递归程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!