#include <stdio.h>
#define MEMO 92
long long unsigned int memoize[MEMO];
void memoInit(){
int i;
for(i=0;i<MEMO;i++)
memoize[i]=-1;
memoize[0]=1;
memoize[1]=1;
}
long long unsigned int fib(int x){
long long unsigned int ans;
if(memoize[x]==-1){
ans = fib(x-1) + fib(x-2);
memoize[x] = ans;
}
return memoize[x];
}
void main(){
int x;
memoInit();
printf("Calculates Fib[x].\n");
printf("Choose x < 0 to quit.\n\n");
scanf("%d", &x);
while(x>=0){
if(x>(MEMO-1))
printf("x must be less than %d\n", MEMO
);
else
printf("Fib[%d]=%lld\n",x, fib
(x
));
scanf("%d", &x);
}
}