2017-01-07 2 views
0

У меня есть простая прологовая программа, которая должна писать все факторы выбранного номера. Однако я начинаю думать, что я никогда не смогу научиться прологу. Я просто не понимаю, как работает программа. Код ниже.Объяснение программы в прологе

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). 

ответ

0

deli/2 подсчитывает счетчик, N (первоначально установлен в 1 на вызов от deli/1) и выводит его значение, если оно равно заданному числу X (первое предложение) или если он аккуратно делит X (второе положение). В последнем случае он увеличивает N и продолжает искать следующий коэффициент.

Затем он возвращается в бесконечный цикл.