Полагаю, ваш цикл неправильный
for(i = 1; i < 40; i++) {
fib_numbers[i] = fib_numbers[i] + fib_numbers[i - 1];
printf("\t%d\n", fib_numbers[i]);
}
Вы присваиваете i-й элемент, переопределяя себя. Значение i-го элемента равно нулю, когда i больше 1.
Может быть, вы должны сделать это так
//Fibonacci sequence
#include <stdio.h>
int main(void) {
int fib_numbers[40] = {1, 1};
for(int i = 2; i < 40; i++) {
fib_numbers[i] = fib_numbers[i - 1] + fib_numbers[i - 2];
printf("\t%d\n", fib_numbers[i]);
}
return 0;
}
Но я рекомендую использовать рекурсию, чтобы найти фибоначчи.
//Fibonacci sequence
#include <stdio.h>
int main void() {
int fib_numbers[40] = {1, 1};
for(int i = 2 ; i < 40 ; i++) {
fib_numbers[i] = fibonacci(i);
printf("\t%d\n", fib_numbers[i]);
}
return 0;
}
int fibonacci(int a) {
if (a <= 1) return 1;
return fibonacci( a - 1 ) + fibonacci( a - 2 );
}