У меня возникли проблемы с решением следующего упражнения...
Факториал можно описать на Прологе следующим образом:
factorial(0, 1).
factorial(N, F) :-
N1 is N - 1,
factorial(N1, F1),
F is N * F1.
Мне нужно расширить этот код, чтобы вернуть список всех предыдущих факториалов до N
. Но он возвращает только первый факториал (1), а затем ошибку: ERROR: Out of local stack
. Вот мой код:
insertList(H, L, [H|L]) :-
!.
factorial(0, 1, [1]).
factorial(N, F, L) :-
N1 is N - 1,
factorial(N1, F1, L),
F is N * F1,
insertList(F, L, [F|L]).
list_factorial(X, L) :-
factorial(X, F, L).
Что я делаю не так?
factorial(0,0)
петель. Добавьте в правило не менееN > 0
! - person false   schedule 13.04.2015