Fibonacci number/ru

From Lazarus wiki
Revision as of 23:13, 14 February 2020 by Trev (talk | contribs) (Fixed syntax highlighting; deleted category included in page template)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)

Числа Fibonacci

Числа Fibonacci задаются следующей последовательностью:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

Идея заключается в сложении двух последних чисел, и этот результат является следующим значением последовательности.

Рекурсивный способ

function FibonacciNumber( n : integer ): integer;
begin
  if n > 1 then result := ( FibonacciNumber( n - 1 ) + FibonacciNumber( n - 2 ) )
    else
      if n = 0 then result := 0
        else result := 1;
end;

Итеративный способ

Вот один из предпочтительных вариантов.

function Fibonacci(n: Integer): Integer;
var
  i,u,v,w: Integer;
begin
  if n <= 0 then
    exit(0);
  if n = 1 then 
     exit(1);
  u := 0;
  v := 1;
  for i := 2 to n do 
  begin
    w := u + v;
    u := v;
    v := w;
  end;
  Result := v;
End;

См. также