Я делаю задание для своего класса, но я застрял.Назначение:
Написать рекурсивную программу для предварительного вычисления чисел Фибоначчи и сохранения их в массиве.Формула Фибоначчи: Fib (0) = 1, Fib (1) = 1 и Fib (i) = Fib (i - 1) + Fib (i - 2).Сохраните i-е число Фибоначчи по индексу i.Иметь цикл, чтобы прочитать i и напечатать i и i-е число Фибоначчи.Используйте -1, чтобы выйти из цикла.Мой вывод неверен, но я не знаю, как это исправить.Я уже некоторое время пытаюсь, но не могу точно определить свою ошибку.
Мой код
#include <stdio.h>
double Fib[50]; //globally declared
int fib(int i)
{
for(i=0; i<50; i++) //loop to scan
{
scanf("%lf", &Fib[i]); //scan and store numbers in an array
if (Fib[i]==-1) //i =-1 will end loop
break;
}
Fib[i]= Fib[i-1]+Fib[i-2];//formula
if(Fib[i]==0||Fib[i]==1) //i=0 and i=1 will print 1
Fib[i]=1;
else if(i>1) //performs the operation with the formula
printf("%d %lf\n", i, Fib[i]);
}
int main()
{
int i=0;
fib(i);
return 0;
}
Expected result:
user input: 4 10 20 15 5 -1
output:
4 5.000000
10 89.000000
20 10946.000000
15 987.000000
5 8.000000
My output:
5 20.000000