Другие языки программирования и технологии

ПЖ! Последовательность Фибоначчи определяется так: φ0=0, φ1=1, ..φn=φn-1+φn-2.

По данному числу n определите n-е число Фибоначчи φn.

Входные данные
Вводится натуральное число n.

Выходные данные
Выведите ответ на задачу.
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.
SM
Santi Munez
95 951
Лучший ответ
Александр Макушин èìåíè ôóíêöèè ïðèñâàèâàåòñÿ âîçâðàùàåìîå çíà÷åíèå
Вот метод для нахождения не последовательности, а конкретного числа по индексу
---
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;
}
AI
Azat Israfilov
62 975
Рекурсией воспользуйтесь.
Павел Никерин
Павел Никерин
1 365

Похожие вопросы