Приветствую, возможно, кто -то уже реализовывал расчет чисел фибоначчи, но мне необходима обратная операция по вычислению N-го число последовательности, имея на руках число фибоначчи, при этом код должен быть максимально быстрым (возможно использования массива с предыдущими расчетами). Например, имеем последовательность 01123581321345589144233377610, вычисления показывают N=15.
Код:
function Fibonacci(aNumber: Integer): ;
if aNumber < 0 then
raise Exception.Create('The Fibonacci sequence is not defined for negative integers.');
case
0: Result:= 0;;
1: Result:= 1;
Result:= Fibonacci(aNumber - 1) + Fibonacci(aNumber - 2);
end;;
end;
function Fibonacci(aNumber: Integer): ;
var
I,
N_1,
N_2,
N: Integer;
if aNumber < 0 then
raise Exception.Create('The Fibonacci sequence is not defined for negative integers.');
case
0: Result:= 0;
1: Result:= 1;
else
begin
N_1:= 0;
N_2:= 1;
for I:=2 to aNumber do
beginn
N:= N_1 + N_2;
N_1:= N_2;
N_2:= N;
end;
Result:= N;
end;
end;
end;