int main()
{
int res;
int input;
cin>>input;
res = FibN(input);
cout << res;
return 0;
}
А можите ещё вот эту задачку посмотреть по паскалю
ЧИСЛО ФИОНАЧЧИ
f0=f1=1
fn=Fn-1+Fn-2
(1 1 2 3 5 8 13 21 34..)
a)Найти 40-е число Фибоначчи
b)Найти первое число Фибоначчи,которое превысит m(m ввести с клавиатуры).
c) Найти сумму первых чисел Фибоначчи,не превосходящих 1000
Цитата:
Originally posted by fynjy
А можите ещё вот эту задачку посмотреть а то кто не решал не кто не может.
ЧИСЛО ФИОНАЧЧИ
f0=f1=1
fn=Fn-1+Fn-2
(1 1 2 3 5 8 13 21 34..)
a)Найти 40-е число Фибоначчи
b)Найти первое число Фибоначчи,которое превысит m(m ввести с клавиатуры).
c) Найти сумму первых чисел Фибоначчи,не превосходящих 1000
А можите ещё вот эту задачку посмотреть а то кто не решал не кто не может.
ЧИСЛО ФИОНАЧЧИ
f0=f1=1
fn=Fn-1+Fn-2
(1 1 2 3 5 8 13 21 34..)
a)Найти 40-е число Фибоначчи
b)Найти первое число Фибоначчи,которое превысит m(m ввести с клавиатуры).
c) Найти сумму первых чисел Фибоначчи,не превосходящих 1000
1.
Код:
2.
Код:
int main()
{
int res;
int input;
int count=1;
cin>>input;
do
{
res = FibN(count++);
}
while(res<=input);
cout << res;
return 0;
}
{
int res;
int input;
int count=1;
cin>>input;
do
{
res = FibN(count++);
}
while(res<=input);
cout << res;
return 0;
}
3.
Код:
int main()
{
int res=0;
int n=1,sum=0;
for (n=1; res<1000; n++)
{
sum=sum+res;
res=FibN(n);
}
cout << sum;
return 0;
}
{
int res=0;
int n=1,sum=0;
for (n=1; res<1000; n++)
{
sum=sum+res;
res=FibN(n);
}
cout << sum;
return 0;
}
а вот функция, которая делает основные вычисления:
Код:
/* функция вычисляет n-е число последовательности Фибоначчи */
unsigned int FibN(unsigned int n)
{
int f_1 = 1, f_2 = 0, f_current=0;
//если n = 1 возвращаем n (F1=1)
if(n <= 1)
return n;
/* в цикле со второго числа последовательности (k=2) начинаем вычисления по формуле Fn=Fn-1+Fn-1 */
for(unsigned int k = 2; k <= n; k++)
{
f_current = f_1 + f_2;
f_2 = f_1;
f_1 = f_current;
}
return f_current;
}
unsigned int FibN(unsigned int n)
{
int f_1 = 1, f_2 = 0, f_current=0;
//если n = 1 возвращаем n (F1=1)
if(n <= 1)
return n;
/* в цикле со второго числа последовательности (k=2) начинаем вычисления по формуле Fn=Fn-1+Fn-1 */
for(unsigned int k = 2; k <= n; k++)
{
f_current = f_1 + f_2;
f_2 = f_1;
f_1 = f_current;
}
return f_current;
}