tengo el siguiente fragmento de código de prólogo:¿Por qué este comando causa un desbordamiento de pila en prolog?
num(0).
num(X) :- num(X1), X is X1 + 1.
fact(0,1) :-!.
fact(X,Y) :- X1 is X-1, fact(X1,Y1), !, Y is Y1 * X.
fact(X) :- num(Y), fact(Y,X).
Puede alguien explicar por qué el siguiente comando provoca un desbordamiento de pila? Gracias por adelantado.
fact(6).
Quizás debería señalar al novato que el problema se analiza, pueden prevenirse mediante la adición de 'X> 0' al cuerpo de la segunda cláusula para ** hecho/2 **. – hardmath