For a homework assignment we were asked to create a fibonacci number generator and it was mentioned that to note behaviour as N (the number of terms) exceeds 46.
This is my code:
#include <stdio.h>
int main(void) {
int N;
int i;
int fn, fi, fj;
fj = 1;
fi = 1;
FILE *fp;
fp = fopen("fibb.txt", "w");
printf("Enter the number of terms");
scanf("%d", &N);
for (i = 1; i <= N; i++) {
if (i == 1 || i == 2) {
fprintf(fp, "%d\n", fi);
} else {
fn = fi + fj;
fj = fi;
fi = fn;
fprintf(fp, "%d\n", fn);
}
}
fclose(fp);
return 0;
}
fibb.txt file:
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
-1323752223
512559680
-811192543
-298632863
Why are there negative numbers? The code works fine to predict fibonacci numbers for small N. Are the numbers too large for c to store or is there some memory allocation issue? I dont think the numbers should be too large to store since they are only 10 digit numbers.