我想实现一个可分解的函数(X),如果X可以写成X = n*b.的话,这是真的。isTeiler(X,Y) :- Y mod X =:= 0.我现在的问题是,我不知道如何在没有回溯的情况下以失败结束递归。我认为剪裁可以完成这个任务,但是当hatTeiler失败后,当两个参数相等时,它就直接跳到isTeiler,如果两个参数相等,这当然是正确的。我也尝试过使用\+,但没有成功。
因此,我在Prolog中有以下工作代码,它生成给定值A的阶乘:factorial(A,B) :- A>0, C is A-1, factorial(C,D), B is我正在寻找关于这个代码是如何工作的解释。也就是说,当你问这个问题时会发生什么:阶乘(4,答案)。factorial(0, 1).
我知道上面是递归定义的“基本情况”。我的猜测是阶乘(0,1)插入了一些包含(0,1)的结构作为“阶乘”<em