我需要编写一个程序,计算范围内产品的乘积:
我写了以下代码:
mult(N,N,R,R).
mult(N,Nt,R,Rt):-N1=Nt+1,R1=Rt*(1/(log(Nt))),mult(N,N1,R,R1).
这应该实现从Nt
到N
的基本产品1/ln(j)
。据我了解,当 Nt 和 N 相等时,它必须停止。但是,由于以下原因,我无法使其正常工作:
?- mult(10,2,R,1), write(R).
ERROR: Out of global stack
以下错误。有没有其他方法可以不使用 SWI-Prolog 的默认库来实现循环?