Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
18
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-1.delphi
Normal file
18
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-1.delphi
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
function FibonacciI(N: Word): UInt64;
|
||||
var
|
||||
Last, New: UInt64;
|
||||
I: Word;
|
||||
begin
|
||||
if N < 2 then
|
||||
Result := N
|
||||
else begin
|
||||
Last := 0;
|
||||
Result := 1;
|
||||
for I := 2 to N do
|
||||
begin
|
||||
New := Last + Result;
|
||||
Last := Result;
|
||||
Result := New;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
function Fibonacci(N: Word): UInt64;
|
||||
begin
|
||||
if N < 2 then
|
||||
Result := N
|
||||
else
|
||||
Result := Fibonacci(N - 1) + Fibonacci(N - 2);
|
||||
end;
|
||||
36
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-3.delphi
Normal file
36
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-3.delphi
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
function fib(n: Int64): Int64;
|
||||
|
||||
type TFibMat = array[0..1] of array[0..1] of Int64;
|
||||
|
||||
function FibMatMul(a,b: TFibMat): TFibMat;
|
||||
var i,j,k: integer;
|
||||
tmp: TFibMat;
|
||||
begin
|
||||
for i := 0 to 1 do
|
||||
for j := 0 to 1 do
|
||||
begin
|
||||
tmp[i,j] := 0;
|
||||
for k := 0 to 1 do tmp[i,j] := tmp[i,j] + a[i,k] * b[k,j];
|
||||
end;
|
||||
FibMatMul := tmp;
|
||||
end;
|
||||
|
||||
function FibMatExp(a: TFibMat; n: Int64): TFibmat;
|
||||
begin
|
||||
if n <= 1 then fibmatexp := a
|
||||
else if (n mod 2 = 0) then FibMatExp := FibMatExp(FibMatMul(a,a), n div 2)
|
||||
else if (n mod 2 = 1) then FibMatExp := FibMatMul(a, FibMatExp(FibMatMul(a,a), n div 2));
|
||||
end;
|
||||
|
||||
var
|
||||
matrix: TFibMat;
|
||||
|
||||
begin
|
||||
matrix[0,0] := 1;
|
||||
matrix[0,1] := 1;
|
||||
matrix[1,0] := 1;
|
||||
matrix[1,1] := 0;
|
||||
if n > 1 then
|
||||
matrix := fibmatexp(matrix,n-1);
|
||||
fib := matrix[0,0];
|
||||
end;
|
||||
Loading…
Add table
Add a link
Reference in a new issue