Difference between revisions of "Fibonacci number"

From Free Pascal wiki
Line 22: Line 22:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
== Iterative way ==
 +
This one is preferable.
 +
 +
<syntaxhighlight>
 +
 +
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;
 +
 +
</syntaxhighlight>
  
 
== See also ==
 
== See also ==

Revision as of 07:05, 23 November 2016

Fibonacci number

The Fibonacci Sequence is the series of numbers:

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

The idea is to add the two last numbers, and thus get the next value.

Recursive way

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;

Iterative way

This one is preferable.

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;

See also