# 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;
```