#include #include /* fibonacci number in scheme (define (fib n a b) ; call with (fib n 1 1) (if (< n 3) b (fib (- n 1) b (+ a b)))) */ int fib1(int n) { if (n<3) return 1; else return fib1(n-1) + fib1(n-2); } int fib2(int n) { int a = 1, b = 1; int temp; while (n>2) { temp = b; b = a+b; a = temp; n--; } return b; } // WHICH C FUNCTION HAS MORE IN COMMON WITH THE SCHEME VERSION? int fib3(int n, int a, int b) // a,b should be initially passed 1 { if (n<3) return b; else return fib3(n-1,b,a+b); } int main() { printf(" %d %d %d\n", fib1(10), fib2(10), fib3(10,1,1)); return 0; }