/*
 **********************************************************************
 *
 *      CLP(R) Version 2.0	(Example Programs Release)
 *	(C) Copyright, March 1986, Monash University
 *
 **********************************************************************
 */

%
% Simple recursive formulation of fibonacci numbers.
% The goal      ?- go       shows how the definition can be used for 
% both finding a a fibonacci number given its index, and finding the index 
% of a given fibonacci number.
%

fib(0, 1).
fib(1, 1).
fib(N, X1 + X2) :-
	N > 1,
	fib(N - 1, X1), 
	fib(N - 2, X2).

go:- 	fib(10, Z), 
	printf("forward: fib(10) = %d\n",[Z]),
	fib(Y, Z),
	printf("backward: fib(%d) = %d\n",[Y,Z]).

% Answer:
%  forward: fib(10) = 89
%  backward: fib(10) = 89

?- printf("\n>>> Sample goal: go/0\n", []).