35 lines
802 B
Plaintext
35 lines
802 B
Plaintext
|
|
||
|
/*
|
||
|
**********************************************************************
|
||
|
*
|
||
|
* 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", []).
|