用prolog解释程序

用prolog解释程序,prolog,Prolog,我有一个简单的prolog程序,它应该写一个选定数字的所有因子。然而,我开始认为我永远也学不了序言。我只是不明白这个程序是怎么运作的。代码如下 deli(X):- deli(X,1). deli(X,X):- write(X),nl. deli(X,N):- Z is X mod N, Z==0, write(N),nl, N1 is N+1, deli(X,N1). deli(X,N):- N1 is N+1, deli(

我有一个简单的prolog程序,它应该写一个选定数字的所有因子。然而,我开始认为我永远也学不了序言。我只是不明白这个程序是怎么运作的。代码如下

deli(X):-
    deli(X,1).
deli(X,X):-
    write(X),nl.
deli(X,N):-
    Z is X mod N,
    Z==0,
    write(N),nl,
    N1 is N+1,
    deli(X,N1).
deli(X,N):-
    N1 is N+1,
    deli(X,N1).

deli/2
对计数器
N
(从
deli/1
调用时最初设置为1)进行计数,如果它等于给定的数字
X
(第一条),或者如果它干净地除以
X
(第二条),则打印其值。在后一种情况下,它递增
N
,并继续搜索下一个因子

然后,它返回并进入一个无限循环