Я написал предикат fib/2 для вычисления чисел Фибоначчи на Прологе. Хотя он работает, он всегда говорит «вне локального стека», и ошибка выглядит как:
?- fib(10, F).
F = 55 ;
ERROR: Out of local stack
мой предикат ниже:
fib(0, 0).
fib(1, 1).
fib(N, NF) :-
A is N - 1,
B is N - 2,
fib(A, AF),
fib(B, BF),
NF is AF + BF.
Кто-нибудь знает, почему это так и как это исправить, чтобы получить следующие вещи::
% or the search might stop immediately, without pressing space.
?- fib2(10, F).
F = 55 ;
false.
Заранее спасибо!