/* Which is your favorite Fibonacci function? */ #include #include int fib1(int n) { if (n<3) return 1; else return fib1(n-1) + fib1(n-2); } int fib2(int n) { int fibiter(int n, int a, int b) { if (n<3) return b; else return fibiter(n-1,b,a+b); } return fibiter(n,1,1); } int fib3(int n) { int a = 1, b = 1; int temp; while (n>2) { temp = b; b = a+b; a = temp; n--; } return b; } // Which two versions have more in common? int main(int arc, char **argv) { int n = atoi(argv[1]); // use command line arg for value printf("the %dth Fibonacci number is %d\n", n,fib1(n)); printf("with tail recursion it's also %d\n", fib2(n)); printf("without recursion it's still %d\n", fib3(n)); return(0); }