По данному числу n определите n-е число Фибоначчи φn.
Входные данные
Вводится натуральное число n.
Выходные данные
Выведите ответ на задачу.
Другие языки программирования и технологии
ПЖ! Последовательность Фибоначчи определяется так: φ0=0, φ1=1, ..φn=φn-1+φn-2.
program fabon;
uses crt;
function fibo(n: integer): integer;
var fn,fn1,fn2,k: integer;
begin
fn1:=1;
fn:=0;
for k:=1 to n do
begin
fn2:=fn1;
fn1:=fn;
fn:= fn1+fn2;
end;
fibo:= fn;
end;
var i, n: integer;
begin
clrscr;
write('Vvesti chislo chlenov '); readln(n);
for i:= 1 to n do write(fibo(i):6);
writeln;
readkey;
end.
uses crt;
function fibo(n: integer): integer;
var fn,fn1,fn2,k: integer;
begin
fn1:=1;
fn:=0;
for k:=1 to n do
begin
fn2:=fn1;
fn1:=fn;
fn:= fn1+fn2;
end;
fibo:= fn;
end;
var i, n: integer;
begin
clrscr;
write('Vvesti chislo chlenov '); readln(n);
for i:= 1 to n do write(fibo(i):6);
writeln;
readkey;
end.
Александр Макушин
èìåíè ôóíêöèè ïðèñâàèâàåòñÿ âîçâðàùàåìîå çíà÷åíèå
Вот метод для нахождения не последовательности, а конкретного числа по индексу
---
using System.Numerics;
…
public static BigInteger FibonacciNumber(int n)
{
if (n <= 2) return BigInteger.One;
BigInteger
a = 1, ta,
b = 1, tb,
c = 1, rc = 0, tc,
d = 0, rd = 1;
while (n != 0)
{
if ((n & 1) != 0) // Если степень нечетная
{
// Умножаем вектор R на матрицу A
tc = rc;
rc = rc * a + rd * c;
rd = tc * b + rd * d;
}
// Умножаем матрицу A на саму себя
ta = a; tb = b; tc = c;
a = a * a + b * c;
b = ta * b + b * d;
c = c * ta + d * c;
d = tc * tb + d * d;
n >>= 1; // Уменьшаем степень вдвое. В паскале это n := n div 2;
}
return rc;
}

---
using System.Numerics;
…
public static BigInteger FibonacciNumber(int n)
{
if (n <= 2) return BigInteger.One;
BigInteger
a = 1, ta,
b = 1, tb,
c = 1, rc = 0, tc,
d = 0, rd = 1;
while (n != 0)
{
if ((n & 1) != 0) // Если степень нечетная
{
// Умножаем вектор R на матрицу A
tc = rc;
rc = rc * a + rd * c;
rd = tc * b + rd * d;
}
// Умножаем матрицу A на саму себя
ta = a; tb = b; tc = c;
a = a * a + b * c;
b = ta * b + b * d;
c = c * ta + d * c;
d = tc * tb + d * d;
n >>= 1; // Уменьшаем степень вдвое. В паскале это n := n div 2;
}
return rc;
}

Рекурсией воспользуйтесь.
Похожие вопросы
- Помогите составить блок схему. Данны целые числа n, k (n>=k>=0). Вычислить n(n-1)*(n-2)... (n-k-1)/k!
- Матрица M*N, состоящая из "0" и "1", найти наибольшую фигуру из единиц с помощью рекурсии. С++
- Java: Вычислить приблеженое значение бесконечной сумы с епс=0.00001. ((-1)в степени(n+1) *x в степени n) /n +-λ
- Даны действительные числа а (1),а (2),...а (2n). Получить: а (1),а (2n),а (2),а (2n-1),а (3),...а (n),а (n+1).
- найти все семизначные числа, которые делятся на 15 и записываются только цифрами 0 и 1. Составить программу на паскале
- Решите задачу! Дано целое число n найдите сумму 1^n +2^n-1 + 3^n-2 ...+n^1
- Машинный код это же 0 и 1?
- Что такое Srevice Pack 1 или 2 или 3? если знаешь, то как сделать чтобы изменить с 1 хотябы на 2-ой или 3-ий?
- С++ Арифметические действия над числами пронумерованы следующим образом : 1-сложение, 2-вычитание, 3-умножение, 4-дел...
- Вычислить значение функции y=sinx – cosAX + B, где Х изменяется от 1 до 10, А от 10 до 1, В=2, шаг равен 3. Составить