/* fib(n,f) iff f is the nth Fibonacci number */ /* Straight Prolog version */ /* fib(+N, -F) */ fib(0,1). fib(1,1). fib(N,F) :- N >= 2, N1 is N-1, fib(N1,F1), N2 is N-2, fib(N2,F2), F is F1+F2. /* Using CLP(FD) */ /* fib(+N, -F) and fib(-N, +F) */ /* the latter will terminate with bound on N */ fibc(0,1). fibc(1,1). fibc(N,F) :- N #>= 2, N1 #= N-1, fibc(N1,F1), N2 #= N-2, fibc(N2,F2), F #= F1+F2.