我是 Prolog 的新手,但我仍然习惯它的逻辑。
我的任务是创建将自然数转换为“S 数”的函数,反之亦然。
所以数字 0 将是0
。
1 号将是s(0)
.
2 号将是s(s(0))
.
等等。
nat(0).
nat(s(0)):- nat(X).
我已经拥有了为给定 S 数查找自然数的函数:
s2nat(0, 0) :- !.
s2nat(s(S),Number) :- s2nat(S,NewNumber), Number is NewNumber + 1.
所以?- s2nat(s(s(s(0))), X)
会X=3
作为输出。
现在我需要编写一个相反的函数:返回给定自然数的 S 数。
在这里我被困住了。我不太明白如何编写条件,以便 Prolog 明白我需要s(S)
返回。该条件Number is NewNumber + 1
不再适用于返回并达到“0”。
你有什么建议吗?