4 ms·
the same prolog problem is defined for what happens when you supply both arguments, if the statement is true it will eval to true, if it is false, it will eval
by segmondy 12y ago
the same prolog problem is defined for what happens when you supply both arguments, if the statement is true it will eval to true, if it is false, it will eval to false. if neither, it will generate all possible solutions, one at a time.
:-use_module(library(clpq)).
fib_aux(N, A, Sum,, F) :-
{ N = 0, F = 1};
{ N = 1, F = 1};
{ N >= 2,
N1 = N - 1,
Acc = Sum,
NewSum = A + Sum,
F = F1 + Acc,
F1 >= N1 % to not run infinitly for unsatisfiable question clp_fib(N, 4).
},
fib_aux(N1, Acc, NewSum, F1).
fib(N, F) :-
fib_aux(N, 0, 1, F).