Почему мой предикат в Prolog Fib/2 всегда говорит «вне локального стека»?

Я написал предикат 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. 

Заранее спасибо!

5
задан false 1 December 2014 в 20:27
поделиться