【发布时间】:2021-07-13 12:22:57
【问题描述】:
我正在尝试编写一个 Prolog 递归,它将返回以下数字表示:
1 --> s(0)
2 --> s(s(0))
3 --> s(s(s(0))) ...
我使用了以下代码:
retnum(s(0),1). %Stop Condition
retnum(S,Z):-
retnum(s(S),Z1),
Z is Z1+1.
但是当我尝试运行预测时:
retnum(A,2).
我得到结果 A=0,如果我继续,我会收到超出卡住限制的错误。 我期待得到一个结果 A = s(s(0))。 我还尝试添加额外的停止条件:retnum(0,0)。
知道我的错误在哪里以及是否有更好的方法吗?
【问题讨论】:
标签: recursion prolog successor-arithmetics