Page 17, Exercise 8
#include <stdio.h>
int iterFib(int);
int recurFib(int);
int main(){
int n;
printf("n:(>=0): ");
scanf("%d", &n);
while (n < 0)
{ /*error loop */
printf("n:(>=0): ");
scanf("%d", &n);
}
printf("%d Fibonacci is %d.\n", n, iterFib(n));
printf("%d Fibonacci is %d.\n", n, recurFib(n));
}
int recurFib(int n)
{ /*recursive version */
if ((n==0) || (n==1)) return 1;
return recurFib(n-1) + recurFib(n-2);
}
int iterFib(int n)
{/* find the factorial, return as a double
to keep it from overflowing */
int i;
int fib, fib1, fib2;
if ((n == 0) || (n == 1)) return 1;
fib1 = fib2 = 1;
for (i = 2; i <=n; i++) {
fib = fib1+fib2;
fib2 = fib1;
fib1 = fib;
}
return fib;
}
|