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] = 0; $f[1] = 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[0][0]*$initial[0][0] + $Final[0][1]*$initial[1][0]; $b = $Final[1][0]*$initial[0][0] + $Final[1][1]*$initial[1][0]; $c = $Final[0][0]*$initial[0][1] + $Final[0][1]*$initial[1][1]; $d = $Final[1][0]*$initial[0][1] + $Final[1][1]*$initial[1][1]; $Final[0][0] = $a; $Final[1][0] = $b; $Final[0][1] = $c; $Final[1][1] = $d; } } return $Final[0][1]; } 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
Recommended Pages
- PHP Program - To Check Prime Number
- PHP Program - Bubble Sort
- PHP Program - Selection Sort
- PHP Program - Maximum Subarray Sum
- PHP Program - Reverse digits of a given Integer
- PHP Program - Merge Sort
- PHP Program - Shell Sort
- Stack in PHP
- Queue in PHP
- PHP Program - Find LCM of Two Numbers
- PHP Program - To Check Whether a Number is Palindrome or Not
- PHP Program - To Check Whether a String is Palindrome or Not
- PHP Program - Heap Sort
- PHP Program - Quick Sort
- PHP - Swap Two Numbers without using Temporary Variable
- PHP Program - To Check Armstrong Number
- PHP Program - Counting Sort
- PHP Program - Radix Sort
- PHP Program - Find Largest Number among Three Numbers
- PHP Program - Print Floyd's Triangle