# PHP Program - Fibonacci Sequence

Fibonacci terms are generally represented as Fn. A Fibonacci term is the sum of two previous terms and starts with 0 and 1. Mathematically, it can be represented as:

Fn = Fn-1 + Fn-2

With boundary conditions: F0 = 0 and F1 = 1

The Fibonacci Sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233...

### Method 1: Using Recursive function

In the example below, a recursive function called fib() is created to find out the nth term of Fibonacci sequence.

```<?php
function fib(\$n) {
if (\$n == 0)
{return 0;}
elseif (\$n == 1)
{return 1;}
else
{return fib(\$n-1) + fib(\$n-2);}
}

echo "Fibonacci 5th term: ".fib(5)."\n";
echo "Fibonacci 6th term: ".fib(6)."\n";
echo "Fibonacci 7th term: ".fib(7)."\n";
?>
```

The above code will give the following output:

```Fibonacci 5th term: 5
Fibonacci 6th term: 8
Fibonacci 7th term: 13
```

### Method 2: Using Dynamic Programming

The Fibonacci term can also be estimated using dynamic programming. As compared to the recursive function, it calculates a specific term of the sequence only once.

```<?php
function fib(\$n) {
//creating array which contains Fibonacci terms
//int f[n+1];
\$f = array();
\$f = 0;
\$f = 1;
for(\$i = 2; \$i <= \$n ; \$i++) {
\$f[\$i] = \$f[\$i-1] + \$f[\$i-2];
}
return \$f[\$n];
}

echo "Fibonacci 6th term: ".fib(6)."\n";
echo "Fibonacci 7th term: ".fib(7)."\n";
echo "Fibonacci 8th term: ".fib(8)."\n";
?>
```

The above code will give the following output:

```Fibonacci 6th term: 8
Fibonacci 7th term: 13
Fibonacci 8th term: 21
```

### Method 3: Using Ternary Operator

This can also be achieved using ternary operator.

```<?php
function fib(\$n) {
\$y = (\$n == 0)? 0 : ((\$n == 1) ? 1 : fib(\$n-1) + fib(\$n-2));
return \$y;
}

echo "Fibonacci 8th term: ".fib(8)."\n";
echo "Fibonacci 9th term: ".fib(9)."\n";
echo "Fibonacci 10th term: ".fib(10)."\n";
?>
```

The above code will give the following output:

```Fibonacci 8th term: 21
Fibonacci 9th term: 34
Fibonacci 10th term: 55
```

### Method 4: Space optimized method

In this method, only three variables are used which changes in each iteration and finally nth term of Fibonacci Sequence is calculated.

```<?php
function fib(\$n) {
\$a = 0; \$b = 1; \$c = 0;
if (\$n == 0)
{return \$a;}
for(\$i = 2; \$i <= \$n; \$i++) {
\$c = \$a + \$b;
\$a = \$b;
\$b = \$c;
}
return \$b;
}

echo "Fibonacci 9th term: ".fib(9)."\n";
echo "Fibonacci 10th term: ".fib(10)."\n";
echo "Fibonacci 11th term: ".fib(11)."\n";
?>
```

The above code will give the following output:

```Fibonacci 9th term: 34
Fibonacci 10th term: 55
Fibonacci 11th term: 89
```

### Method 5: Using power of matrix

A Fibonacci sequence term can also be calculated as power of matrix. A Fibonacci sequence holds below mentioned property: To calculate Fn, is calculated and A01 will be the Fn.

```<?php
function fib(\$n) {
\$initial = array(array(1,1),array(1,0));
\$Final = array(array(1,1),array(1,0));

if (\$n == 0)
{return 0;}
else {
for(\$i = 1; \$i < \$n ; \$i++) {
\$a = \$Final*\$initial + \$Final*\$initial;
\$b = \$Final*\$initial + \$Final*\$initial;
\$c = \$Final*\$initial + \$Final*\$initial;
\$d = \$Final*\$initial + \$Final*\$initial;
\$Final = \$a;
\$Final = \$b;
\$Final = \$c;
\$Final = \$d;
}
}
return \$Final;
}

echo "Fibonacci 10th term: ".fib(10)."\n";
echo "Fibonacci 11th term: ".fib(11)."\n";
echo "Fibonacci 12th term: ".fib(12)."\n";
?>
```

The above code will give the following output:

```Fibonacci 10th term: 55
Fibonacci 11th term: 89
Fibonacci 12th term: 144
```

5