在我最近在大学逻辑编程考试中遇到的一个问题中,我被要求编写一个Prolog谓词odd/1,该谓词确定给定的值是否为奇数。实现应该使用已经给定的谓词s/1,该谓词将对给定元素的后继(即X+ 1)进行计算。这是实现odd/1谓词的解决方案:
odd(s(0)):-!.. % A number s(s(X)) (i.e X
因此,我在Prolog中有以下工作代码,它生成给定值A的阶乘:factorial(A,B) :- A>0, C is A-1, factorial(C,D), B is我正在寻找关于这个代码是如何工作的解释。也就是说,当你问这个问题时会发生什么:阶乘(4,答案)。factorial(0, 1).
我知道上面是递归定义的“基本情况”。我不知道这是<em