extern void printf(char *format,...); int global_arr[100]; int initialized; void assure_fib(int n); int fib(int n) { int res; if(n>=2 && n<=100) { assure_fib(n); return global_arr[n-1]; } else { int result; result=0; if(n==1) { global_arr[0]=1; result=1; } return(result); } } void assure_fib(int n) { if(n > initialized) { int result; result=fib(n-2); global_arr[n-1]=result+fib(n-1); initialized=n; } } void main() { int i; initialized=0; for(i=10;i<45;i=i+3) { printf("%d -> %d\n", i, fib(i)); } }