Tôi đã viết một biến vị ngữ fib/2 để tính toán các số Fibonacci trong Prolog. Mặc dù nó hoạt động, nó luôn luôn nói "ra khỏi ngăn xếp địa phương" và lỗi trông giống như:Tại sao vị từ của tôi trong Prolog Fib/2 luôn luôn nói "ra khỏi ngăn xếp cục bộ"?
?- fib(10, F).
F = 55 ;
ERROR: Out of local stack
ngữ của tôi là dưới đây:
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.
Bất cứ ai biết tại sao điều này là gì và làm thế nào để sửa chữa nó để nhận các nội dung sau ::
% or the search might stop immediately, without pressing space.
?- fib2(10, F).
F = 55 ;
false.
Cảm ơn bạn trước!
Các vòng lặp có 'fib (1, 0)' sẽ không thành công. – false